建立学生信息链表 (20分) 您所在的位置:网站首页 scor定义 建立学生信息链表 (20分)

建立学生信息链表 (20分)

2023-09-28 10:48| 来源: 网络整理| 查看: 265

建立学生信息链表

本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。 函数接口定义:

void input();

该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:

struct stud_node { int num; /*学号*/ char name[20]; /*姓名*/ int score; /*成绩*/ struct stud_node *next; /*指向下个结点的指针*/ };

单向链表的头尾指针保存在全局变量head和tail中。

输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。 裁判测试程序样例:

#include #include #include struct stud_node { int num; char name[20]; int score; struct stud_node *next; }; struct stud_node *head, *tail; void input(); int main() { struct stud_node *p; head = tail = NULL; input(); for ( p = head; p != NULL; p = p->next ) printf("%d %s %d\n", p->num, p->name, p->score); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

1 zhang 78 2 wang 80 3 li 75 4 zhao 85 0

输出样例:

1 zhang 78 2 wang 80 3 li 75 4 zhao 85

思路: 创建一个链表,首先判断是否带有头结点 本题不带头结点 要存入数据,就要先开辟结点大小的空间 然后考虑空链表时应该是头尾指向同一个位置 不为空则每次只需在尾部插入让尾一直在变

void input(){ int num; //struct stud_node *head,*tail; //head和tail已经声明为全局变量不可重复定义再定义就为错 head=tail=NULL; while(scanf("%d",&num)&&num!=0){ //C语言中开辟一个结构体stud_node大小的空间并且用指针p指向开辟的空间 struct stud_node *p=(struct stud_node *)malloc(sizeof(struct stud_node )); p->num=num; //scanf中若输入的是int类型的数则要用& scanf("%s %d", p->name,&p->score); //若链表为空则首等于尾指向同一个位置 if(head==NULL){ head=tail=p; } //若链表不为空则尾的位置每次都在变化 //尾的下一个插入p,p又变成新的尾 //即尾指向p的位置 else{ tail->next=p; tail=p; } } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有