解题思路:
①:定义结点,在单链表结点的基础上,多一个指向前驱的指针
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分
10 人评分
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:563 |
WU-图形输出 (C++代码)浏览:800 |
C语言程序设计教程(第三版)课后习题6.6 (C++代码)浏览:624 |
A+B for Input-Output Practice (C语言代码)浏览:458 |
简单的a+b (C语言代码)浏览:543 |
1124题解浏览:591 |
有关字符,字符串的输入输出函数说明浏览:477 |
1126题解浏览:578 |
大家好,我是验题君浏览:576 |
循环入门练习5 (C语言代码)浏览:829 |