为什么我的链表在运行时会卡死或者无法存取信息?

c语言中的链表出了些小问题,运行程序是会卡死

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"struct.h"//专门存放结构体
void register_show();
void success_show();
void order_check_show();
void no_order_show(); //都为显示函数 无影响
int register_add(peo *a,peo *b)
{
    system("cls");
    register_show();
    int career;
    scanf("%d",&career);
    peo *pnew,*p;//想用链表
    pnew=(peo *)malloc(sizeof(peo));
    p=(peo *)malloc(sizeof(peo));
    scanf("%s",pnew->id);
    fflush(stdin);
    scanf("%s",pnew->name);
    fflush(stdin);
    if(a==NULL)
    {
        a=pnew;
    }
    else
    {
        p=a;
        while(p!=NULL)
        {
            if(strcmp(p->id,pnew->id)==0)
            {
                printf("此账号已经被注册!");
                return 0;
            }
            p=p->next;
        }
        p=pnew;
        pnew->next=NULL;
    }
    p=a;
    while(p!=NULL)
    {
        printf("%s",p->id);
        p=p->next;
    }
    free(p);
    free(pnew);
    system("cls");
    success_show();
    system("pause");
    return 1;
}
/*typedef struct people{
    char name[10];
    char id[10];
    struct people * next;
}peo; */
//结构体如上

我想用建立一个链表来存储我的人员信息,但是每次存完发现最多只有一个人员的信息(就是存了两个就会发现其中一个信息没了)。
so我就想输出出来看我保存的东西是不是有问题,结果现在发现这个程序就直接卡死了。(×_×)
这个就有意思了,凭我的直觉,一定是我的链表或定义出了问题,但是奈何我这个大萌新是真的找不到什么错误(好吧!其实是学业不精,链表里面的一些注意点没学会)叹气!
现在我只能求助于各位大神,希望大家能够帮我看看到底是出了什么问题,当然顺便再和我说说关于c语言的链表的知识就更好了(当然,我是绝对不敢要求各为大佬的,只是我的一个小小的请求)最后 拜托了 希望大佬们把我从害怕链表的日子里救出来吧!!!

1个回答

你的链表插入 就是重新建立新的链表,至少得出现
p->next = pnew;
pnew->next = NULL ;
你没有往链表里面尾部插入这个新的结点;
可以看我的博客https://blog.csdn.net/cxyzyywoaini/article/details/88080125

cxyzyywoaini
liunx_hello 回复修比 朵啦: 优秀!
11 个月之前 回复
weixin_44800756
修比 朵啦 时就给它的next指针赋NULL,还有要改变头指针就需要把输进来的参数的类型改为指针的指针,否则就要用return返回给面函数里的指针
11 个月之前 回复
weixin_44800756
修比 朵啦 就直接脱离链表了,而且我需要在定义pnew
11 个月之前 回复
weixin_44800756
修比 朵啦 谢谢,我想明白了。当我的p指向了NULL,那么这个p
11 个月之前 回复
weixin_44800756
修比 朵啦 首先非常感谢你的回答,看了你的博客我收获了很多,但是在上面的这串代码中,我是想pnew为创立的新节点,相当于你的博客中的new节点,而我的不需要排序,只要在找链表尾节点的过程中能遍历一遍链表看看有没有重复,所以我就只设了p,它先指向头结点,再向后移动,每一一次就查找比较一下,直到他的值为NULL这样就到了尾节点,再将新的节点赋上去,但是很奇怪它只要遍历就会卡顿。谢谢,希望能再为我解答一下,非常感谢
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问