※【数据结构】链表实现学生管理系统

本文讨论了在C语言中利用链表实现学生管理系统的挑战,特别是如何在修改学号后保持链表的有序性。虽然已解决修改学号导致的有序性破坏问题,但目前系统在修改后显示学生记录时仍无法按学号排序,这提示未来需要添加排序功能。
摘要由CSDN通过智能技术生成

上面这段代码有一个很大的问题,就是修改学号之后无法保证数组的有序性。
“修改”还要考虑修改的内容是否是学号,如果修改了学号,则应该编写程序保证不能破坏链表“有序性”的这个特点。

下面是修改后的

#include <stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#include<stdbool.h>

#define NO_LENGTH  20
#define NAME_LENGTH 11

/*定义学生结构体的数据结构*/
typedef struct Student {
    char studentNo[NO_LENGTH];
    char studentName[NAME_LENGTH];
} st;

/*定义每条记录或节点的数据结构*/
typedef struct node {
    st data; //数据域
    struct node *next; //指针域
} Node, *Link;

//功能菜单
void myMenu(void);

//输入学生信息
void inputStudent(Link l);

//输入学号
void inputStudentNo(char s[], char no[]);

//新增学生记录
bool addNode(Link head);

//删除学生记录
bool deleteNode(Link head);

//打印链表
void displayNode(Link head);

//查询学生记录
bool queryNode(Link head);

//修改学生记录
bool modifyNode(Link head);

//统计学生人数
int countNode(Link head);

//清除链表
void clearLink(Link head);


int main(void) {
    int select; //功能选项代码
    int count;  //学生人数
    //链表头
    Link head;

    head = (Link) malloc(sizeof(Node));
    head->next = NULL;

    while (1) {
        myMenu();
        printf("\n请输入你的选择(1-7):");
        scanf("%d", &select);

        switch (select) {
            case 1:
                if (addNode(head)) {
                    printf("成功增加一个学生记录。\n");;
                }
                break;
            case 2:
                if (deleteNode(head)) {
                    printf("成功删除一个学生记录。\n");
                } else {
                    printf("没有找到要删除的学生记录。\n");
                }
                break;
            case 3:
  
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值