原题链接:数据结构-双向循环链表
解题思路:
①:定义结点,在单链表结点的基础上,多一个指向前驱的指针
typedef struct Node_{ int element; struct Node_* prior; struct Node_* next; }*node,Node;
②:据题目要求声明所需函数
node creat_list(); void insert_(node L,int i,int e); void delete_(node L,int i); void show_(node L);
③:编写主函数框架
int main() { node L=creat_list(); int c,i,e; while(scanf("%d",&c)!=EOF) switch(c){ case 0:{show_(L);break;} case 1:{scanf("%d%d",&i,&e);insert_(L,i,e);break;} case 2:{scanf("%d",&i);delete_(L,i);break;} } return 0; }
④:定义之前声明的函数
注意事项:
测试数据为多组 ,双向链表为空时,前驱指针和后继指针指向头结点自己
每次输出占一行
参考代码:
#include<stdio.h> #include<malloc.h> typedef struct Node_{ int element; struct Node_* prior; struct Node_* next; }*node,Node; node creat_list(); void insert_(node L,int i,int e); void delete_(node L,int i); void show_(node L); int main() { node L=creat_list(); int c,i,e; while(scanf("%d",&c)!=EOF) switch(c){ case 0:{show_(L);break;} case 1:{scanf("%d%d",&i,&e);insert_(L,i,e);break;} case 2:{scanf("%d",&i);delete_(L,i);break;} } return 0; } /*========================================================*/ node creat_list() { node head=(node)malloc(sizeof(Node)); head->next=head; head->prior=head; return head; } /*========================================================*/ void insert_(node L,int i,int e) { node p=L; node a=(node)malloc(sizeof(Node)); a->element=e; /*找到插入位置i的前一个结点*/ for(int j=1;j<i;j++) p=p->next; /*在第i个位置插入a结点*/ a->next=p->next; a->next->prior=a; p->next=a; a->prior=p; } /*========================================================*/ void delete_(node L,int i) { node p=L; /*找到删除的结点,注意和之前插入时不同*/ for(int j=0;j<i;j++) p=p->next; /*删除位置为i的结点*/ p->prior->next=p->next; p->next->prior=p->prior; free(p); } /*========================================================*/ void show_(node L) { node p=L->next; while(p!=L) { printf("%d ",p->element); p=p->next; } printf("\n"); }
别忘点赞哦-.-么么哒
0.0分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
借鉴了 ,感谢!