小白编程题:单链表的简单应用

描述

编程实现一个简易学生信息管理系统,按如下步骤分别用自定义函数实现:
(1) 根据输入信息创建单链表。每个学生的信息包括姓名和成绩;
(2) 输出简易学生信息管理系统(单链表)的所有学生(结点)信息。

I/O

输入格式

根据输入的若干个学生信息创建单链表。每一行代表一个学生信息,以成绩-1作为输入的结束。

输出格式

每个学生信息占一行,姓名和成绩之间以空格分隔,成绩保留一位小数。

输入样例

Cai 61.2
Cai 64.6
Cheng 68.4
Xiao 71.2
Zhang 83.2
Liu 90.4
Xiao 92.6
Cai 96.8
xx -1

输出样例

Cai 61.2
Cai 64.6
Cheng 68.4
Xiao 71.2
Zhang 83.2
Liu 90.4
Xiao 92.6
Cai 96.8

实现

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct student{
    char name[10];
    float score;
    struct student *next;
}node;
void create(node **head){
    char name[10];
    float score;
    while(~scanf("%s %f",name,&score)) {
        if (score != -1) {
            node *new = (node *) malloc(sizeof(node));
            new->next = NULL;
            strcpy(new->name,name);
            new->score=score;
            if (*head == NULL) {
                *head = new;
            } else {
                node *work = *head;
                while (work->next != NULL) {
                    work = work->next;
                }
                work->next = new;
            }
        }else{
            break;
        }
    }
}
void printlist(node *head){
    node *work=head;
    while(work!=NULL){
        printf("%s %.1f\n",work->name,work->score);
        work=work->next;
    }
}
void freelist(node *head){
    node *work;
    while(head!=NULL){
        work=head;
        head=head->next;
        free(work);
    }
}
int main(){
    node *head=NULL;
    create(&head);
    printlist(head);
    freelist(head);
    return 0;
}

 

posted @   椰萝Yerosius  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示