双链表的建立与实现

来源:互联网 发布:福田电动三轮车淘宝 编辑:程序博客网 时间: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;
}
0 0