6-3 建立学生信息链表

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

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


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


函数接口定义:


void input();


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


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


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


输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。


裁判测试程序样例:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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()
{
  struct stud_node *pt;
  pt = (struct stud_node *)malloc(sizeof(struct stud_node));
  scanf("%d", &pt->num);
  while (pt->num != 0)
  {
    scanf("%s %d", pt->name, &pt->score);
    if (head == NULL)
    {
      head = pt;
      head->next = NULL;
    }
    //tail为开辟节点
    if (tail != NULL)
    {
      tail->next = pt;
    }
    // 把新加的节点赋予tail
    tail = pt;
    tail->next = NULL;
    pt = (struct stud_node *)malloc(sizeof(struct stud_node));
    scanf("%d", &pt->num);
  }
}
相关文章
|
5月前
尾插法建立链表
尾插法建立链表
27 0
尾插法建立链表
数据结构实验之链表二:逆序建立链表
数据结构实验之链表二:逆序建立链表
|
5月前
|
存储 C语言
[C语言/PTA] 建立学生信息链表
[C语言/PTA] 建立学生信息链表
94 0
6-10 建立学生信息链表(20分)
本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。
83 0
|
机器学习/深度学习 算法 C语言
数据结构与算法-实验1链表的建立与操作
1. 掌握链表的数据结构 2. 建立空链表 3. 用头插法向链表插入数据,实验数据: 验证数据:20,20,17,16,15,15,11,10,8,7,7,5,4 4. 依次输出链表中的数据 5. 利用链表原空间进行对链表进行反转 6. 依次输出反转后的链表数据,以判断反转操作的正确性,注意反转后,链表的第一个和最后一个元素是否正确 7,进阶要求:删除无序链表的重复元素。
174 0
数据结构与算法-实验1链表的建立与操作
统计学生信息(使用链表完成)
题目链接:http://ica.openjudge.cn/struct/3/ 总时间限制: 1000ms  内存限制: 65536kB 描述 利用动态链表记录从标准输入输入的学生信息(学号、姓名、性别、年龄、得分、地址) 其中,学号长度不超过20, 姓名长度不超过40, 性别长度为1, 地址长度...
1196 0
数据结构实验之链表二:逆序建立链表
数据结构实验之链表二:逆序建立链表 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 输入整数个数N,再输入N个整数,按照这些整数输入的相反顺序建立单链表,并依次遍历输出单链表的数据。
1383 0
|
4月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
4月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表