双链表的建立与实现
来源:互联网 发布:福田电动三轮车淘宝 编辑:程序博客网 时间:2024/06/06 07:37
/*双链表的建立与实现*/
#include<stdio.h>
#include<stdlib.h>
struct Dnode
{
int data;
Dnode *prior;
Dnode *next;
};
/*双链表的初始化*/
void Init_D(Dnode *&D)
{
D=(Dnode*)malloc(sizeof(Dnode));
D->prior=NULL;
D->next=NULL;
D->data=0;
}
/*双链表的建立*/
void Create_D(Dnode *&D)
{
int n;
int i;
Dnode *Node,*point=D;
printf("请输入要输链表的个数\n");
scanf("%d",&n);
D->data=n;
for(i=1;i<=n;i++)
{
Node=(Dnode*)malloc(sizeof(Dnode));
scanf("%d",&Node->data);
point->next=Node;
Node->prior=point;
point=Node;
}
point->next=NULL;
}
/*双链表的插入*/
void Insert_D(Dnode *&D,int num,int sum)
{
int i;
D->data++;
Dnode *Node=D,*point;
for(i=1;i<=num;i++)
Node=Node->next;
for(i=1;i<=sum;i++)
Node=Node->prior;
point=(Dnode*)malloc(sizeof(Dnode));
point->data=34;
point->next=Node->next;
Node->next->prior=point;
point->prior=Node;
Node->next=point;
}
/*双链表的删除*/
void Delete_D(Dnode *&D,int num,int sum)
{
Dnode *point ,*Node=D;
int i;
for(i=1;i<=num;i++)
Node=Node->next;
for(i=1;i<=sum;i++)
Node=Node->prior;
Node->prior->next=Node->next;
Node->next->prior=Node->prior;
D->data--;
}
/*双链表的输出*/
void Print_D(Dnode *&D)
{
int i;
Dnode *Node=D;
for(i=1;i<=D->data;i++)
{
Node=Node->next;
printf("%d ",Node->data);
}
printf("\n");
for(i=i-1;i>0;i--)
{
printf("%d ",Node->data);
Node=Node->prior;
}
printf("\n");
}
int main()
{
Dnode *D;
Init_D(D);
Create_D(D);
Print_D(D);
Insert_D(D,5,3);
Print_D(D);
Delete_D(D,5,3);
Print_D(D);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
struct Dnode
{
int data;
Dnode *prior;
Dnode *next;
};
/*双链表的初始化*/
void Init_D(Dnode *&D)
{
D=(Dnode*)malloc(sizeof(Dnode));
D->prior=NULL;
D->next=NULL;
D->data=0;
}
/*双链表的建立*/
void Create_D(Dnode *&D)
{
int n;
int i;
Dnode *Node,*point=D;
printf("请输入要输链表的个数\n");
scanf("%d",&n);
D->data=n;
for(i=1;i<=n;i++)
{
Node=(Dnode*)malloc(sizeof(Dnode));
scanf("%d",&Node->data);
point->next=Node;
Node->prior=point;
point=Node;
}
point->next=NULL;
}
/*双链表的插入*/
void Insert_D(Dnode *&D,int num,int sum)
{
int i;
D->data++;
Dnode *Node=D,*point;
for(i=1;i<=num;i++)
Node=Node->next;
for(i=1;i<=sum;i++)
Node=Node->prior;
point=(Dnode*)malloc(sizeof(Dnode));
point->data=34;
point->next=Node->next;
Node->next->prior=point;
point->prior=Node;
Node->next=point;
}
/*双链表的删除*/
void Delete_D(Dnode *&D,int num,int sum)
{
Dnode *point ,*Node=D;
int i;
for(i=1;i<=num;i++)
Node=Node->next;
for(i=1;i<=sum;i++)
Node=Node->prior;
Node->prior->next=Node->next;
Node->next->prior=Node->prior;
D->data--;
}
/*双链表的输出*/
void Print_D(Dnode *&D)
{
int i;
Dnode *Node=D;
for(i=1;i<=D->data;i++)
{
Node=Node->next;
printf("%d ",Node->data);
}
printf("\n");
for(i=i-1;i>0;i--)
{
printf("%d ",Node->data);
Node=Node->prior;
}
printf("\n");
}
int main()
{
Dnode *D;
Init_D(D);
Create_D(D);
Print_D(D);
Insert_D(D,5,3);
Print_D(D);
Delete_D(D,5,3);
Print_D(D);
return 0;
}
0 0
- 双链表的建立与实现
- 查找与二叉排序树的建立与查找实现
- 二叉树的几种非递归建立与遍历的实现
- 二叉排序树的建立与查询的Java实现
- JSP + Servlets 编程环境的建立与实现
- 单链表的建立与删除 (使用头插法和尾插法实现)
- 编程实现二叉树的建立与遍历
- 二叉树的建立与遍历(一)(c++实现)
- MATLAB实现系统传递函数模型的建立与转换
- 编程实现双链表的建立、插入、删除
- Mybatis初步建立与实现
- 二叉树的建立(非递归建立与定义建立)与基本操作(广度和深度遍历,求叶子树高)实现
- 线性表的基本操作实现及其应用之顺序表的建立与操作实现
- 建立与 Apache 的连接
- 单链表的建立与输出
- ATL的建立与调用
- 二叉排序树的建立与遍历
- 二叉排序树的建立与查找
- 黑马程序员-内存管理基础知识
- Android—Bitmap和Drawable
- SpringMVC个人笔记1
- Linux删除文件夹命令
- NEON在Android中的使用举例
- 双链表的建立与实现
- 通过短信讲解内容提供者,内容观察者,以及无界面后台运行服务,开机启动和杀死服务后重新启动
- 关于linux vim命令
- java经常问到的知识
- 动物统计 nyoj286
- 2 掌握MySQL的SELECT语法
- RichEditControl 的背景色设置
- 黑马程序员——java基础知识
- El el表达式,判断是否为空