原题链接:数据结构-静态链表
解题思路:
如下
注意事项:
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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复