C语言链表

使用链表实现 学生信息管理系统
实现 学生信息的 1录入, 2插入,3查找(学号),4修改(学号)

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

struct stulist{
    int id;
    char name[16];
    char sex[16];
    int score;
    struct stulist *next;
};

struct stulist head;


void student_append(struct stulist *ptHead); // 声明录入函数
void find_student_byId(struct stulist *ptHead,int id); //声明查找函数(学号)
void change_student_byId(struct stulist *ptHead,int id);// 声明修改函数(学号)
void insert_student(struct stulist *ptHead);  // 声明插入函数


int main(int argc,const char* argv[])
{
    head.next = NULL;
    while(1){
        printf("************学生管理系统***********\n");
        printf("1.录入信息 2.插入,3.查找(学号),4.修改(学号),5。退出\n请输入你的选择:");
        int n,id;
        scanf("%d",&n);
        if(5 ==n)
        {                                                                                    
            printf("欢迎下次使用\n");
            break;
        }
        switch(n){
        case 1:
            student_append(&head);
            break;
        case 2:
            insert_student(&head);
            break;
        case 3:
            printf("请输入学号:");
            scanf("%d",&id);
            find_student_byId(&head,id);
            break;
        case 4:
            printf("请输入学号:");
            scanf("%d",&id); 
            change_student_byId(&head,id);
            break;
        }
    }

    return 0;
}
void student_append(struct stulist *ptHead)
{
    struct stulist *ptail = ptHead;
    while(1)
    {
        int flag ;                                                  
        printf("请输入你的选择,1.录入2.取消录入:");
        scanf("%d",&flag);
        if(1 == flag)
        {
            int id,score;
            char name[16],sex[16];
            struct stulist *p = malloc(sizeof(*p));
            printf("请依次输入 学号、姓名、性别、成绩、:");
            scanf("%d %s %s %d",&(p->id),&(p->name),&(p->sex),&(p->score));
            p->next = NULL;
            ptail->next = p;
            ptail = ptail->next;
            printf("录入成功!\n");
        }
        else if(2 == flag)
            break;
    }
}
void find_student_byId(struct stulist *ptHead,int id)
{
    struct stulist *p = ptHead->next;
    while(p)
    {
        if(p->id == id)
        {
            printf("查找成功!\n");
            printf("该学生的信息为:");
            printf("学号:%d,姓名%s,性别:%s,成绩:%d\n",p->id,p->name,p->sex,p->score);
            return;
        }
        p = p->next;
    }
    if(p == NULL)
        printf("没有此学生的信息!\n");
}
void change_student_byId(struct stulist *ptHead,int id)
{
    struct stulist *p = ptHead->next;
    while(p)
    {
        if(p->id == id)
        {                                                                                
            printf("请重新输入该学生的信息:");
            scanf("%d %s %s %d",&(p->id),&(p->name),&(p->sex),&(p->score));
            printf("修改成功!\n");
            return;
        }
        p = p->next;
    }
    if(p == NULL)
        printf("没有此学生的信息,无法修改!\n");
}
void insert_student(struct stulist *ptHead)
{
    struct stulist *ptu = ptHead->next;
    printf("请输入你的选择:1:插入到最后,2.插入指定同学之后:");
    int select;
    scanf("%d",&select);
    struct stulist *p = malloc(sizeof(*p));
    printf("请依次输入 学号、姓名、性别、成绩、:");
    scanf("%d %s %s %d",&(p->id),&(p->name),&(p->sex),&(p->score));
    p->next = NULL;
    if(1 == select)
    {
        while(ptu->next != NULL);
        ptu->next = p;
        ptu = ptu->next;;
        printf("插入成功!\n");
    }
    else if(2 == select)
    {
        printf("请输入要插入的同学之后学号:");
        int id;
        scanf("%d",&id);
        while(ptu)
        {
            if(ptu->id == id)
            {
                p->next = ptu->next;
                ptu->next = p;
                printf("插入成功\n");
                break;
            }
            ptu = ptu->next;
        }
        if(ptu == NULL)
            printf("没有找到该同学的信息,无法插入!\n");

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值