调试出现unhandled exception 小白求解

#include
#include

typedef struct lnode
{ int data;
struct lnode *next;
}LNode,*LinkList;

LNode* Creat_LNode ( ) // 创建链表
{
LNode *s,*r,*L;
int x;
scanf ( "%d",&x );
L = r = ( LNode * ) malloc ( sizeof( LNode ));
L->next = NULL;
while ( x != 00 )
{
s = ( LNode * ) malloc ( sizeof( LNode ));
s->data = x;
if ( L->next == NULL )
L->next = s;
else
r->next = s;
r = s;
scanf ( "%d",&x );
}
if ( r != NULL )
r->next = NULL;
return L;
}

LNode *Locate_LNode1(LNode *L,int x) //寻址 ,判断原链表中是否存在与x值相等的节点
{
LNode *p=L->next;
while ( p !=NULL && p->data != x)
p = p->next;
return p;
}

LNode *Locate_LNode2(LNode *L,int x)
{
LNode *p=L;
while ( p != NULL )
{
p = p->next;
if ( p->data > x )
{
return p;
}
else
if ( p->next = NULL && p->data < x )
{
return p;
}
}
return NULL;
}

void Insert_LNode( LNode *L,LNode *p,int x )
{
LNode *q,*s;
s=(LNode *)malloc(sizeof(LNode));
s->data = x;
q=L;
if ( p->data > x )
{
while ( q->next != p)
q=q->next;
s->next = p;
q->next = s;
}
else
{
s->next = NULL;
p->next = s;
}
}

void main ()
{
LNode * L=NULL;
LNode * p=NULL;
int x;
LNode * q=NULL;
LNode * w=NULL;
printf("请输入带头结点单链表L中的整数值(输入以00为结束的标志):");
L=Creat_LNode();
printf("请输入要插入的整数值:");
scanf("%d",&x);
p=Locate_LNode1(L,x);
if ( p != NULL )
printf ("该整数值已存在,不需要再插入!");
else
{
q=Locate_LNode2(L,x);
Insert_LNode(L,q,x);
printf("插入成功!");
printf("插入后的链表为:\n");
w = L->next;
while ( w != NULL )
{
printf("%d\n",w->data);
w=w->next;
}
}
printf("\n");
}

2个回答

 LNode *Locate_LNode2(LNode *L,int x)
{
LNode *p=L;
while ( p != NULL )
{
p = p->next;
if ( p->data > x )//像这里,是不是得判断一下p==null,因为指向p->next了,p->next是可能为null的。其他地方你再看看有没有类似错误
{
dasusu
dasusu 回复danielinbiti: 我加了 还是一样的问题
接近 5 年之前 回复
danielinbiti
danielinbiti 回复dasusu: 不看需求,看逻辑,应该得while ( p != NULL&&p->next!=NULL )
接近 5 年之前 回复
dasusu
dasusu 你看看上面 的图片 每次到这里就是这样 我加了一个条件判断还是一样的
接近 5 年之前 回复

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问