原题链接:数据结构-静态链表
解题思路:
如下
注意事项:
1.数组的长度设置
2.插入和删除的循环注意是否遍历一遍
3.格式要求,数字前面有空格,分割线****是20个以及只设show的下方
参考代码:
#include#include#include#define SIZE 11 typedef struct NodeName { char ar[8]; int next; }NodeName; void MyCreateArrList(NodeName * str, int m) { int i; str[0].next = 2; str[1].next = 0; for (i = 2; i < m - 1; i++) { str[i].next = i + 1; } str[m - 1].next = 0; for (int j = 0; j < m; j++) { str[j].ar[0] = '\0'; } } int DeleteArrList(NodeName* str, int n, int m) { int i; int temp1 = 1; //头节点,数组最后 for (i = 0; i < n - 1; i++) { temp1 = str[temp1].next; } int temp2 = str[temp1].next;// 1-2-3,此处为2 str[temp1].next = str[temp2].next; //下面是free str[temp2].next = str[0].next; str[0].next = temp2; return 1; } void InsertArrList(NodeName* str, int n, int m) { NodeName p; int temp0 = str[0].next; //temp0是空位的位置,也是p的编号 //上面是malloc int temp1 = 1; //头节点,数组最后 for (int i = 0; i < n - 1; i++) { temp1 = str[temp1].next; } scanf("%s", p.ar); p.next = str[temp1].next; str[temp1].next = temp0; str[temp0] = p; //把新的结构体放入空位 } int SearchArrList(NodeName* str, char * search, int m) { int i; int temp = 1; //头节点,数组最后 for (i = 0; i < m ; i++) { temp = str[temp].next; if (!strcmp(str[temp].ar, search)) break; } return temp; } void ShowArrList(NodeName* str, int m) { int i; for (i = 0; i < m; i++) { if (str[1].next == 10) str[0].next = 0; printf("%-8s%2d\n", str[i].ar, str[i].next); } } void PrintList(NodeName* str, int m) { char check[7]; char check_search[7]; int a; int count = 0; while(scanf("%s", check) != EOF) { if (!strcmp(check, "delete")) { scanf("%d", &a); DeleteArrList(str, a, SIZE); } else if(!strcmp(check, "insert")) { scanf("%d", &a); InsertArrList(str, a, m); str[0].next++; } else if (!strcmp(check, "search")) { scanf("%s", check_search); printf("%2d\n", SearchArrList(str, check_search, m)); printf("********************\n"); } else if (!strcmp(check, "show")) { ShowArrList(str, m); printf("********************\n"); } } } int main(void) { NodeName str[SIZE]; MyCreateArrList(str, SIZE); PrintList(str, SIZE); return 0; }
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复