使用头插法建立一个带头结点的存储学生信息(学号, 姓名)的单链表,并将建立后的学生链表中的信息输出到屏幕上。 具体要求: ① 单链表的建立和单链表的显示分别使用函数实现,学号为0,结束输入。 ② 在main函数中完成初始化工作并调用上述两个函数。 【输入形式】 输入若干行。每行数据包括学号(整数), 姓名, 最后一行输入一个0 【输出形式】 输出n行, 一行一个学生信息,每行信息包括学号和 姓名, 学号和姓名之间用一个空格分开。
时间: 2024-02-12 09:07:09 浏览: 178
好的,这是一个关于链表的问题,我会帮您解答。以下是代码实现:
```c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student{
int num;
char name[20];
struct student *next;
}Node;
Node* create()
{
Node *head, *p;
head = (Node*)malloc(sizeof(Node)); // 头结点
head -> next = NULL;
p = head;
int num;
char name[20];
while(1){
scanf("%d", &num);
if(num==0) break;
scanf("%s", name);
Node *q = (Node*)malloc(sizeof(Node));
q -> num = num;
strcpy(q -> name, name);
q -> next = p -> next;
p -> next = q;
p = q;
}
return head;
}
void print(Node *head)
{
Node *p = head -> next;
while(p){
printf("%d %s\n", p -> num, p -> name);
p = p -> next;
}
}
int main()
{
Node *head;
head = create();
print(head);
return 0;
}
```
运行时,您可以输入若干行学生信息,格式为 学号 姓名,每行一个信息。最后输入0结束输入。
例如,输入以下信息:
```
1 John
2 Lily
3 Tom
0
```
则输出为:
```
3 Tom
2 Lily
1 John
```
希望我的回答能够帮到您!
阅读全文