c语言编程之双向循环链表

  双向循环链表就是形成两个环,注意每个环的首尾相连基本就可以了。

  程序中采用尾插法进行添加节点。

   #include<stdio.h>
#include<stdlib.h>
#define element int
typedef struct Node{
element data;
struct Node *next;
struct Node *prior;
}*pNode; //build a new double loop list
element Init_list(pNode p)
{
//pNode r=NULL;
//*p=(pNode)malloc(sizeof(pNode));
p->next=p;
p->prior=p;
return ;
}
//creat a new double loop list
element Build_list(pNode *L,element num)
{
pNode p=NULL;
pNode r=NULL;
int i=;
int j=;
p=*L;
for(j=;j<num;j++)
{
r=(pNode)malloc(sizeof(pNode));
r->data=j;
p->next=r;
r->prior=p;
r->next=p;
p->prior=r;
printf("flag:%d\n",p->next->data);
p=r;
//printf("flag:%d\n",p->next->data);
}
return ;
}
element Print_list(pNode L)
{
if(!L)
{
printf("it is empty\n");
}
pNode p=L;
p=p->next;
int i=;
while(i<)
{
printf("data:%d\n",p->data);
p=p->next;
i++;
} return ;
}
int main()
{
pNode P=NULL;
pNode M=NULL;
P=(pNode)malloc(sizeof(pNode));
Init_list(P);
M=Build_list(&P,);
Print_list(P);
return ;
}
上一篇:一种神奇的双向循环链表C语言实现


下一篇:双向循环链表(C语言描述)(四)