#include<stdio.h> #include<stdlib.h> #include<string.h> struct stud_node{ int num; char name[20]; int score; struct stud_node *next; }; int main(void) { struct stud_node *head,*tail, *p; int num, score; char name[20]; int size = sizeof(struct stud_node); head = tail = NULL; printf("Enter num,name and score:\n"); scanf("%d", &num); /*建立单向链表*/ while(num != 0){ p = (struct stud_node *)malloc(size); scanf("%s%d", name, &score); p->num = num; strcpy(p->name, name); p->score = score; p->next = NULL; if(head==NULL) head=p; else tail->next = p; tail = p; scanf("%d", &num); } /*输出单向链表*/ for(p = head; p!= NULL; p = p->next){ /*调试时设置断点*/ printf("%d %s %d\n", p->num, p->name, p->score); } return 0; }
时间: 2023-12-06 17:42:08 浏览: 113
C语言课程设计要求.pdf
这是一个简单的单向链表的代码,用来存储学生的信息。下面是代码的具体解释:
1. 定义结构体`stud_node`,其中包括学生的学号`num`、姓名`name`、成绩`score`和指向下一个节点的指针`next`。
2. 定义指向链表头部和尾部的指针`head`和`tail`,以及一个指向当前节点的指针`p`。
3. 通过`scanf`函数输入学生的信息,包括学号、姓名和成绩。然后动态分配一个空间,将学生信息存储在结构体中。
4. 若链表为空,则将新节点作为头节点;否则将新节点连接到链表尾部。
5. 最后通过循环遍历整个链表,将每个节点的学生信息输出到屏幕上。
需要注意的是,这段代码没有对内存分配失败的情况进行处理,实际使用时需要添加相应的错误处理代码。
阅读全文