原题链接:数据结构-链表的基本操作
解题思路:
注意事项:
参考代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> //定义结点类型 typedef struct Node{ int data; struct Node *next; }Node,*Link; void List_creat(Link head,int n); //头插法创建 int List_insrt(Link head,int i,int n); //插入数据 int List_delete(Link head,int i); //按位删除数据 int List_show(Link head); //遍历链表 int List_get(Link head,int i); //按位获取数据 int main() { int n,a,b; char str[7]; Link head; head = (Link)malloc(sizeof(Node)); head->next=NULL; scanf("%d",&n); List_creat(head,n); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%s",&str); if(!strcmp(str,"show")) { if(List_show(head)) printf("\n"); else printf("Link list is empty\n"); continue; } if(!strcmp(str,"delete")) { scanf("%d",&a); if(List_delete(head,a)) printf("delete OK\n"); else printf("delete fail\n"); continue; } if(!strcmp(str,"insert")) { scanf("%d %d",&a,&b); if(List_insrt(head,a,b)) printf("insert OK\n"); else printf("insert fail\n"); continue; } if(!strcmp(str,"get")) { scanf("%d",&a); if(b = List_get(head,a)) printf("%d\n",b); else printf("get fail\n"); continue; } } return 0; } //头插法创建 void List_creat(Link head,int n) { Link r,p; r = head; for(int i=0;i<n;i++) { p = (Node*)malloc(sizeof(Node)); scanf("%d",&p->data); p->next = r->next; r->next = p; } } //遍历链表 int List_show(Link head) { Link p; int n=0; p = head->next; while(p) { n++; printf("%d ",p->data); p = p->next; } if(n==0) return 0; else return 1; } //插入数据 int List_insrt(Link head,int i,int n) { Link p,t; int j=0; p = head; while(p&&j<i-1) { p = p->next; j++; } if(!p||j>i-1) return 0; t = (Link)malloc(sizeof(Node)); t->data = n; t->next = p->next; p->next = t; return 1; } //删除数据 int List_delete(Link head,int i) { Link p,q; p = head; int j=0; while(p->next&&j<i-1) { p=p->next; j++; } if(!(p->next)||j>i-1) return 0; q = p->next; p->next = q->next; free(q); return 1; } //按位获取数据 int List_get(Link head,int i) { Link p; p = head->next; int j=1; while(p&&j<i){ p =p->next; j++; } if(!p||j>i) return 0; return p->data; }
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复