首页 > 代码库 > c语言编程之双向循环链表

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

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

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

  1 #include<stdio.h>  2 #include<stdlib.h>  3 #define element int  4 typedef struct Node{  5         element data;  6         struct Node *next;  7         struct Node *prior;  8 }*pNode;  9  10 //build a new double loop list 11 element Init_list(pNode p) 12         { 13          //pNode r=NULL; 14          //*p=(pNode)malloc(sizeof(pNode)); 15          p->next=p; 16          p->prior=p; 17          return 0; 18 } 19 //creat a new double loop list 20 element Build_list(pNode *L,element num) 21         { 22           pNode p=NULL; 23           pNode r=NULL; 24           int i=0; 25           int j=0; 26           p=*L; 27           for(j=0;j<num;j++) 28             { 29                r=(pNode)malloc(sizeof(pNode)); 30                r->data=http://www.mamicode.com/j; 31                p->next=r; 32                r->prior=p; 33                r->next=p; 34                p->prior=r; 35                printf("flag:%d\n",p->next->data); 36                p=r; 37                //printf("flag:%d\n",p->next->data); 38            } 39            return 0; 40 } 41 element Print_list(pNode L) 42         { 43           if(!L) 44            { 45               printf("it is empty\n"); 46            } 47           pNode p=L; 48           p=p->next; 49           int i=0; 50           while(i<16) 51             { 52                 printf("data:%d\n",p->data); 53                 p=p->next; 54                 i++; 55             } 56  57            return 0; 58 } 59 int main() 60         { 61           pNode P=NULL; 62           pNode M=NULL; 63           P=(pNode)malloc(sizeof(pNode)); 64           Init_list(P); 65           M=Build_list(&P,10); 66           Print_list(P); 67           return 0; 68 }

 

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