双向循环链表demo,自测OK

#include  <stdio.h> 
#include  <string.h>
#include  <stdlib.h>


typedef struct dlink{
int data;
struct dlink *prior;
struct dlink *next;
}LINK;




void append_dlink(LINK *head,LINK *node){
printf("----------------------------\n");
printf("head:>>>>%p\n",head);
printf("node:%p\n",node);
      LINK *p  = head;
      node->next=p->next;
      node->prior=p->prior;
      p->prior=node;
printf("prior:%p\n",head->prior);


printf("nodeprior:%d\n",node->data);
printf("nodeprior:%d\n",node->prior->data);

printf("nodeprior:%d\n",node->prior->prior->data);


printf("nodeprior:%d\n",node->prior->prior->prior->data);


printf("nodeprior:%d\n",node->prior->prior->prior->prior->data);




printf("----------------------------------------\n");



printf("nodeprior:%d\n",node->data);


printf("nodeprior:%d\n",node->next->data);

printf("nodeprior:%d\n",node->next->next->data);


printf("nodeprior:%d\n",node->next->next->next->data);


printf("nodeprior:%d\n",node->next->next->next->next->data);








}




void crt_dlink(LINK *head,int n){
     LINK *tail = head,*p; 
     int i=0;
     for(i = 0;i<n;i++){
p = (LINK *)malloc(sizeof(LINK));
  printf("请输入第%2d个zhi:",i+1);
                scanf("%d",&p->data);
tail->next=p;
p->prior = tail;
tail = p;
      }
      head->prior=tail;
      tail->next= head;
}


void show_dlink(LINK *head){
LINK *p = head->next;
printf("reverse traversal:\n");
while(p!=head){
printf("==>%d\n",p->data);
p = p->next;
}
}


int main(){
LINK *head,*node;
head =(LINK *)malloc(sizeof(LINK));
head->prior = NULL;
head->next  = NULL;
int n = 0;
printf("please input: ");
do{
   scanf("%d",&n);
}while(n==0);
crt_dlink(head,n);
printf(">>>>>>>>>>>>>>%p\n",head);
// show_dlink(head);
LINK *nodeNew=(LINK *)malloc(sizeof(LINK));
nodeNew->prior=NULL;
        nodeNew->next=NULL;
nodeNew->data=100;
append_dlink(head,nodeNew);
show_dlink(head);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值