6、建立具有三个结点的链表并输出链表。结点数据为学号、姓名。其中main函数代码如下: int main() { st *head; head=input(); print (head); return 0; }
时间: 2024-02-06 12:12:43 浏览: 64
好的,这里给出完整的程序代码,包括 `input()` 和 `print()` 函数的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义链表结点结构体
typedef struct student {
int id; // 学号
char name[20]; // 姓名
struct student *next; // 指向下一个结点的指针
} st;
// 输入学生信息并创建链表
st *input()
{
st *head, *p1, *p2, *p3;
head = (st *)malloc(sizeof(st));
p1 = (st *)malloc(sizeof(st));
p2 = (st *)malloc(sizeof(st));
p3 = (st *)malloc(sizeof(st));
// 填充结点数据
head->id = 0;
strcpy(head->name, "");
head->next = p1;
p1->id = 1;
strcpy(p1->name, "Tom");
p1->next = p2;
p2->id = 2;
strcpy(p2->name, "Jerry");
p2->next = p3;
p3->id = 3;
strcpy(p3->name, "Mike");
p3->next = NULL;
return head;
}
// 遍历链表并输出结点数据
void print(st *head)
{
st *p = head;
while (p != NULL) {
printf("id=%d, name=%s\n", p->id, p->name);
p = p->next;
}
}
int main()
{
st *head;
head = input();
print(head);
return 0;
}
```
这个程序与前面的程序相似,不同之处在于 `input()` 函数返回了链表的头指针,而 `print()` 函数则直接输出链表数据。运行结果与前面的程序相同:
```
id=0, name=
id=1, name=Tom
id=2, name=Jerry
id=3, name=Mike
```
阅读全文