马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1】头脑导图
2】完成单向循环链表的全部操纵 【创建、判空、尾插、遍历、尾删、烧毁】
创建:- LooplinkPtr caerte()
- {
- LooplinkPtr h=(LooplinkPtr)malloc(sizeof(Looplink));
- if(NULL==h)
- {
- printf("创建失败\n");
- return NULL;
- }
- h->len=0;
- h->data=0;
- h->next=h;
- printf("创建成功\n");
- return h;
- }
复制代码 判空:- int empt(LooplinkPtr h)
- {
- if(NULL==h)
- {
- printf("判空失败\n");
- return -1;
- }
- return h->next==h;
- }
复制代码 尾插:- void Tail_Add(LooplinkPtr h,DataType a)
- {
- if(NULL==h)
- {
- printf("尾插失败\n");
- return ;
- }
- LooplinkPtr p=node_caerte(a);
- LooplinkPtr p1=h;
- while(p1->next!=h)
- {
- p1=p1->next;
- }
- p1->next=p;
- p->next=h;
- h->len++;
- return;
- }
复制代码 遍历:- void show(LooplinkPtr h)
- {
- if(NULL==h||empt(h))
- {
- printf("打印失败\n");
- return ;
- }
- LooplinkPtr p=h;
- while(p->next!=h)
- {
- p=p->next;
- printf("%d->",p->data);
- }
- putchar(10);
- return ;
- }
复制代码 尾删:- void Tail_Del(LooplinkPtr h)
- {
- if(NULL==h||empt(h))
- {
- printf("尾删失败\n");
- return ;
- }
- LooplinkPtr p=h;
- for(int i=0;i<h->len-1;i++)
- {
- p=p->next;
- }
- LooplinkPtr temp=p->next;
- p->next=h;
- h->len--;
- free(temp);
- temp=NULL;
- return ;
- }
复制代码 烧毁:- void My_free(LooplinkPtr h)
- {
- if(NULL==h||empt(h))
- {
- printf("销毁失败\n");
- return ;
- }
- for(int i=0;i<h->len;i++)
- {
- Tail_Del(h);
- }
- free(h);
- printf("销毁成功\n");
- return ;
- }
复制代码 运行截图:

源码:
- #include"Looplink.h"
- LooplinkPtr caerte()
- {
- LooplinkPtr h=(LooplinkPtr)malloc(sizeof(Looplink));
- if(NULL==h)
- {
- printf("创建失败\n");
- return NULL;
- }
- h->len=0;
- h->data=0;
- h->next=h;
- printf("创建成功\n");
- return h;
- }
- int empt(LooplinkPtr h)
- {
- if(NULL==h)
- {
- printf("判空失败\n");
- return -1;
- }
- return h->next==h;
- }
- LooplinkPtr node_caerte(DataType a){ LooplinkPtr p=(LooplinkPtr)malloc(sizeof(Looplink)); if(NULL==p) { printf("创建失败\n"); return NULL; } p->data=a; return p;}
- void Tail_Add(LooplinkPtr h,DataType a)
- {
- if(NULL==h)
- {
- printf("尾插失败\n");
- return ;
- }
- LooplinkPtr p=node_caerte(a);
- LooplinkPtr p1=h;
- while(p1->next!=h)
- {
- p1=p1->next;
- }
- p1->next=p;
- p->next=h;
- h->len++;
- return;
- }
- void show(LooplinkPtr h)
- {
- if(NULL==h||empt(h))
- {
- printf("打印失败\n");
- return ;
- }
- LooplinkPtr p=h;
- while(p->next!=h)
- {
- p=p->next;
- printf("%d->",p->data);
- }
- putchar(10);
- return ;
- }
- void Tail_Del(LooplinkPtr h)
- {
- if(NULL==h||empt(h))
- {
- printf("尾删失败\n");
- return ;
- }
- LooplinkPtr p=h;
- for(int i=0;i<h->len-1;i++)
- {
- p=p->next;
- }
- LooplinkPtr temp=p->next;
- p->next=h;
- h->len--;
- free(temp);
- temp=NULL;
- return ;
- }
- void My_free(LooplinkPtr h)
- {
- if(NULL==h||empt(h))
- {
- printf("销毁失败\n");
- return ;
- }
- for(int i=0;i<h->len;i++)
- {
- Tail_Del(h);
- }
- free(h);
- printf("销毁成功\n");
- return ;
- }
复制代码 3】完成双向循环链表的全部操纵 【创建、判空、尾插、遍历、尾删、烧毁】(与单向循环链表相似)
创建:- Loop_double_linkPtr caerte()
- {
- Loop_double_linkPtr h=(Loop_double_linkPtr)malloc(sizeof(Loop_double_link));
- if(NULL==h)
- {
- printf("创建失败\n");
- return NULL;
- }
- h->len=0;
- h->data=0;
- h->next=h;
- h->proir=h;
- printf("创建成功\n");
- return h;
- }
复制代码 判空:- int empt(Loop_double_linkPtr h)
- {
- if(NULL==h)
- {
- printf("判空失败\n");
- return -1;
- }
- return h->next==h;
- }
复制代码 尾插:- void Tail_Add(Loop_double_linkPtr h,DataType a)
- {
- if(NULL==h)
- {
- printf("尾插失败\n");
- return ;
- }
- Loop_double_linkPtr p=node_caerte(a);
- Loop_double_linkPtr p1=h;
- while(p1->next!=h)
- {
- p1=p1->next;
- }
- p->next=h;
- p->proir=p1;
- h->proir=p;
- p1->next=p;
- h->len++;
- return;
- }
复制代码 遍历:- void show(Loop_double_linkPtr h)
- {
- if(NULL==h||empt(h))
- {
- printf("打印失败\n");
- return ;
- }
- Loop_double_linkPtr p=h;
- while(p->next!=h)
- {
- p=p->next;
- printf("%d->",p->data);
- }
- putchar(10);
- return ;
- }
复制代码 尾删:- void Tail_Del(Loop_double_linkPtr h)
- {
- if(NULL==h||empt(h))
- {
- printf("尾删失败\n");
- return ;
- }
- Loop_double_linkPtr p=h;
- for(int i=0;i<h->len-1;i++)
- {
- p=p->next;
- }
- Loop_double_linkPtr temp=p->next;
- p->next=h;
- h->proir=p;
- h->len--;
- free(temp);
- temp=NULL;
- return ;
- }
复制代码 烧毁:- void My_free(Loop_double_linkPtr h)
- {
- if(NULL==h||empt(h))
- {
- printf("销毁失败\n");
- return ;
- }
- for(int i=0;i<h->len;i++)
- {
- Tail_Del(h);
- }
- free(h);
- printf("销毁成功\n");
- return ;
- }
复制代码 运行截图:
附源码: |