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

Posted FREE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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=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语言编程之双向循环链表的主要内容,如果未能解决你的问题,请参考以下文章

C语言实现双向非循环链表的节点插入

C语言教程“双向循环链表”学习总结及其代码实现

C语言实现双向非循环链表的清空

《链表》之带头双向循环链表

C语言实现双向非循环链表(带头结点尾结点)的节点插入

数据结构:如何用C语言快速实现带头双向循环链表