数据结构补全代码#include<stdio.h> #include<stdlib.h> typedef struct Linklist{ char name[10]; char num[10]; struct Linklist *next; }Linklist,*LNode; //创建链表 //输出链表 //修改链表中的某一项 //在链表尾部插入一项 //在链表中删除一项 void main(){ Linklist *L; int i=255; L=(LNode)malloc(sizeof(Linklist)); L->next=NULL; create(L); while(i!=0){ puts("\n功能:\n1.输出\t2.修改\t3.删除\t4.插入\t0.退出"); scanf("%d",&i); switch(i){ case 1: output(L); break; case 2: update(L); break; case 3: del(L); break; case 4: insert(L); break; } } }
时间: 2023-12-09 14:06:53 浏览: 249
顺序表逆置
好的,这段代码是一个链表的基本操作。下面是完整的代码,包括创建链表、输出链表、修改链表、在链表尾部插入一项、在链表中删除一项等功能。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Linklist {
char name[10];
char num[10];
struct Linklist *next;
} Linklist, *LNode;
// 创建链表
void create(Linklist *L) {
int n;
printf("请输入链表中节点的个数:");
scanf("%d", &n);
LNode p = L;
for (int i = 0; i < n; i++) {
LNode node = (LNode)malloc(sizeof(Linklist));
printf("请输入第%d个节点的姓名和学号:", i+1);
scanf("%s %s", node->name, node->num);
p->next = node;
p = node;
}
p->next = NULL;
}
// 输出链表
void output(Linklist *L) {
LNode p = L->next;
printf("链表中的节点信息为:\n");
while (p != NULL) {
printf("%s %s\n", p->name, p->num);
p = p->next;
}
}
// 修改链表中的某一项
void update(Linklist *L) {
char num[10];
printf("请输入要修改的节点的学号:");
scanf("%s", num);
LNode p = L->next;
while (p != NULL) {
if (strcmp(p->num, num) == 0) {
printf("请输入新的姓名和学号:");
scanf("%s %s", p->name, p->num);
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("链表中没有找到该节点!\n");
}
// 在链表尾部插入一项
void insert(Linklist *L) {
LNode p = L;
while (p->next != NULL) {
p = p->next;
}
LNode node = (LNode)malloc(sizeof(Linklist));
printf("请输入新节点的姓名和学号:");
scanf("%s %s", node->name, node->num);
p->next = node;
node->next = NULL;
printf("插入成功!\n");
}
// 在链表中删除一项
void del(Linklist *L) {
char num[10];
printf("请输入要删除的节点的学号:");
scanf("%s", num);
LNode p = L->next;
LNode pre = L;
while (p != NULL) {
if (strcmp(p->num, num) == 0) {
pre->next = p->next;
free(p);
printf("删除成功!\n");
return;
}
pre = p;
p = p->next;
}
printf("链表中没有找到该节点!\n");
}
int main() {
Linklist *L;
int i = 255;
L = (LNode)malloc(sizeof(Linklist));
L->next = NULL;
create(L);
while (i != 0) {
printf("\n功能:\n1.输出\t2.修改\t3.删除\t4.插入\t0.退出\n");
scanf("%d", &i);
switch(i) {
case 1:
output(L);
break;
case 2:
update(L);
break;
case 3:
del(L);
break;
case 4:
insert(L);
break;
}
}
return 0;
}
```
请注意,这里的链表是单向链表,每个节点包含了姓名和学号两个信息。在主函数中,我们使用了一个while循环,通过输入数字选择需要进行的操作。其中,create函数用于创建链表,output函数用于输出链表,update函数用于修改链表中的某一项,insert函数用于在链表尾部插入一项,del函数用于在链表中删除一项。
阅读全文