C语言创建一个单向链表,存放10个学生的学号,姓名,并输出这种10个学生的信息。
时间: 2024-02-25 11:57:21 浏览: 85
创建包含学号、姓名节点的单链表
好的,我来为您介绍如何使用C语言创建一个单向链表,存放10个学生的学号和姓名,并输出这10个学生的信息。
首先,我们需要定义一个结构体来存储每个学生的学号和姓名:
```c
struct Student {
int id;
char name[20];
struct Student *next;
};
```
其中,`id`表示学号,`name`表示姓名,`next`表示指向下一个学生的指针。
接下来,我们可以使用`malloc`函数动态地分配内存来创建一个链表,并使用`for`循环创建10个学生节点:
```c
struct Student *head, *p;
head = (struct Student *)malloc(sizeof(struct Student));
p = head;
for (int i = 0; i < 10; i++) {
struct Student *node = (struct Student *)malloc(sizeof(struct Student));
printf("请输入第%d个学生的学号和姓名:", i + 1);
scanf("%d%s", &node->id, node->name);
node->next = NULL;
p->next = node;
p = node;
}
```
这里我们使用`scanf`函数从控制台输入每个学生的学号和姓名,并将其存储到对应的节点中。同时,我们还要将每个节点按照顺序连接起来,使其形成一个链表。
最后,我们可以使用`while`循环遍历整个链表,并输出每个学生的信息:
```c
p = head->next;
while (p) {
printf("学号:%d,姓名:%s\n", p->id, p->name);
p = p->next;
}
```
完整代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
struct Student {
int id;
char name[20];
struct Student *next;
};
int main() {
struct Student *head, *p;
head = (struct Student *)malloc(sizeof(struct Student));
p = head;
for (int i = 0; i < 10; i++) {
struct Student *node = (struct Student *)malloc(sizeof(struct Student));
printf("请输入第%d个学生的学号和姓名:", i + 1);
scanf("%d%s", &node->id, node->name);
node->next = NULL;
p->next = node;
p = node;
}
p = head->next;
while (p) {
printf("学号:%d,姓名:%s\n", p->id, p->name);
p = p->next;
}
return 0;
}
```
希望对您有所帮助!
阅读全文