双循环链表//双循环链表#include<>#include<>#definenull0typedefintelemtype;typedefstructnode{elemtypedata;structnode*r;structnode*b;//}slinklist;slinklist*init_slinklist(slinklist*s){s=(slinklist*)malloc(sizeof(slinklist));s->r=s;s->b=s;returns;}intpush(slinklist*s,intn){inti;slinklist*p,*q;q=s;printf("\n请输入数据:\n");for(i=1;i<=n;i++){p=(slinklist*)malloc(sizeof(slinklist));scanf("%d",&p->data);q->r=p;p->b=q;q=p;}q->r=s;s->b=q;return1;}voidout(slinklist*s){slinklist*p;p=s->r;if(s->r==s){printf("\n该表是空表~");}printf("\n元素输出为:");while(p!=s){printf("%d",p->data);p=p->r;}}intbefore_slinklist(slinklist*s,inti,int*e){slinklist*p,*q,*l;q=s;p=s->r;if(s->r==s){printf("\n该表是空表~");1;return}while(p->data!=i){p=p->r;}q=p->b;*e=q->data;printf("\n%d",*e);return1;}intinsert_list(slinklist*s,inti,inte){slinklist*p,*q;p=s->r;while(p->data!=i){p=p->r;}q=(slinklist*)malloc(sizeof(slinklist));q->data=e;q->b=p->b;p->b->r=q;q->r=p;p->b=q;return1;}intdelete_list(slinklist*s,inti,int*e){slinklist*p,*q;p=s->r;if(s->r==s){printf("\n该表是空表~");return0;}while(p->data!=i){p=p->r;}if(p->data==i)*e=p->data;p->b->r=p->r;>r->b=p->r;p-free(p);return1;}intnext_list(slinklist*s,inti,int*e){slinklist*p,*q;p=s->r;if(s->r==s){printf("\n该表是空表~\n");return0;}while(p->data!=i){p=p->r;}if(p->data==i)q=p->r;*e=q->data;printf("\n该元素的后继元素是:%d",*e);return1;}intsearch_list(slinklist*s,inti){slinklist*p;intk=1,t;p=s->r;if(s->r==s)
双循环链表 来自淘豆网m.daumloan.com转载请标明出处.