qierupup 2017-01-11 07:01 采纳率: 100%
浏览 1116
已采纳

新手 C语言运行时停止运行 求大神解决谢谢了 急!

#include
#include

struct stu
{
int id;
int name;
struct stu next;
};
//初始化学生链
struct stu
init_link()
{
struct stu* head=(struct stu*)malloc(sizeof(struct stu));
head->id=-1;
head->next=NULL;
return head;
}
//创建一个新学生
struct stu* new_stu()
{
return (struct stu*)malloc(sizeof(struct stu));
}
//获取链表的尾部元素
struct stu* get_tail(struct stu* head)
{
struct stu* cur=head;
while(!(cur->next==NULL))
{
cur=cur->next;
}
return cur;
}
//根据id查询所有学生,把目标学生返回
struct stu* get_stu_byid(struct stu* head, int id)
{
struct stu* cur=head;
while(!(cur->next==NULL))
{
cur=cur->next;
if(cur->next->id==id)
{
return cur;
}
}
return NULL;
}

int main()
{
//1.添加学生
//2.删除学生
//3.修改学生
//4.查询所有学生
//5.根据id查询指定学生
//6.退出
int choice=0, id, name;
struct stu* head=init_link();
struct stu* ns=NULL;
struct stu* tail=NULL;
struct stu* cur=NULL;
struct stu* tar=NULL;
printf("*****welcome to stu_manage_system*****\n");

while(1)
{
    printf("1.insert stu info\n");
    printf("2.delete stu info\n");
    printf("3.update stu info\n");
    printf("4.query all stu info\n");
    printf("5.query stu info by id\n");
    printf("6.exit\n");
    printf("make your choice:");
    scanf("%d",&choice);
    if(choice==1)
    {
        printf("input stu_id, plz:");
        scanf("%d", &id);
        printf("input stu_name, plz:");
        scanf("%d", &name);
        ns=new_stu();
        ns->id=id;
        ns->name=name;
        ns->next=NULL;
        tail=get_tail(head);
        tail->next=ns;
    }
    if(choice==2)
    {
        cur=head;
        printf("请输入学生学号");
        scanf("%d",&id);
        tar=get_stu_byid(head,id);
        cur=tar->next;
       tar->next=tar->next->next;
       free(cur);

    }
    if(choice==3)
    {
        cur=head;
        printf("input stu_id.pize");
        scanf("%d",&id);
        tar=get_stu_byid(head,id);
        cur=tar->next;
        printf("input stu_name.pize");
        scanf("%d",&name);
        cur->name=name;
    }
    if(choice==4)
    {
        cur=head;
        while(!(cur->next==NULL))
        {
            cur=cur->next;
            printf("stu_id=%d\n",cur->id);
            printf("stu_name=%d\n",cur->name);
            printf("++++++\n");
        }
    }
    if(choice==5)
    {  
    cur=head;
      // struct stu* get_stu_byid(head,id);
       printf("");
    }
    if(choice==6)
    {
       return 0;
    }

}

}

  • 写回答

4条回答 默认 最新

  • 坤昱 《一起学习C语言》专栏作者 2017-01-11 10:54
    关注

    我有篇双向链表list容器的实现,你可以参考下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件