2 qierupup qierupup 于 2017.01.11 15:01 提问

新手 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个回答

a29562268
a29562268   2017.01.11 18:54
已采纳

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

shen_wei
shen_wei   Ds   Rxr 2017.01.11 17:13
sum_TW
sum_TW   2017.01.11 17:34

把错误信息发过来啊,一般常见错误就是你的链表访问时候访问到链表以外的地方,遍历链表的时候要注意,在Linux下面编译就是段错误,你可以加断点试下。

tr1912
tr1912   2017.01.11 19:27

一定要理解双向链表的使用方法和特性

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言里程序编译无误但运行会弹出程序已停止运行是为什么?
C语言里程序编译无误但运行会弹出程序已停止运行是为什么?原文链接(https://zhidao.baidu.com/question/1178139670043658699.html) 摘要 1. 内存溢出 内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软
C语言程序运行后 出现exe已停止工作
这是很常见的错误 runtime  error (运行时错误)就是程序运行到一半,程序就崩溃了。 比如说: ①除以零 ②数组越界:int a[3]; a[10000000]=10; ③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10; ④使用已经释放的空间:int * p;
R语言的绘图基础(谢佳标老师课程笔记)
1.plot函数 > women    height weight 1      58    115 2      59    117 3      60    120 4      61    123 5      62    126 6      63    129 7      64    132 8      65    135 9      66    139 1
每次输入一个字符串后就停止工作了,是怎么回事?
在主函数中输入10个字符串(长度不超过10),用StrSort函数对它们进行排序,然后在主函数中输出这10个排好序的字符串。函数原型如下:         void StrSort(char (*s)[11]) 我的代码: void exe6() {     char (*s)[11];     int i;     for(i=1;i     {         printf(
错误总结:C/C++运行时提示".exe已停止工作"? 调试时出现Program received signal SIGSEGV,Segmentation fault?引用无效内存一般是什么错误?
C/C++运行时提示”.exe已停止工作”? 调试时出现Program received signal SIGSEGV,Segmentation fault. 引用无效内存一般是什么错误?
二叉树的基本操作 源代码
/* 1)基础题 (1)编写二叉排序树的基本操作函数。 ①查找结点函数 SearchNode(TREE *tree,int key,TREE **pkpt,TREE **kpt) ②二叉排序树插入函数 InsertNode(TREE **TREE,int key) ③二叉排序树删除函数 DeleteNode(TREE **tree,int key) (2)调用上述函数实现下列操作。 ①初始化二叉树。 ②调用插入函数建立二叉排序树。 ③调用查找函数在二叉树中查找指定的结点。 ④调用删除函数删除指定的结点为,并动态地显删除结果。 */ #include<stdio.h> #include<malloc.h> #include<conio.h> //#include <system.h> ………… ……
recycleview 求解决。谢谢了
recycleview 滑动时 获取 position  这个用方法? 求解
求助各位高手,帮忙做下,谢谢了
由计算机“想”一个四位数,请人猜出这个四位数是多少。人输入四位数字后,计算机首先判断这四位数字有几位是猜对了,并且在对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数是多少时为止。 
用DEV做的,运行时程序停止
程序代码: #include void max_min(int a[],int n,int *max,int *min); int main(void) { int N; int b[N],i,big,small; int t=0,x=0; printf("Enter:"); scanf("%d",N); for(i=0;i<N;i++){
解开诺记手机密码下赶快来
急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,急用谢谢了,