回 帖 发 新 帖 刷新版面

主题:[讨论]在带头结点的单链表中插入值

#include <stdio.h>
typedef int datatype;
typedef struct node
{
  datatype data;
  struct node * next;
}LNode,* LinkList;

LinkList  Creat_LinkList()
{
 LinkList L;
 LNode *p=L;
 LNode *s;
 datatype x;
 scanf("%d",&x);
 while(x>=0)
  {
   s=( LNode * )malloc(sizeof(LNode));
   s->data=x;
   p->next=s;
   p=s;
   scanf("%d",&x);
  }
 return L;
}
void Insersort(LinkList L,datatype x)
{
 LNode * p=L,*s;
 while(p->next&&p->next->data<=x)
  p=p->next;
 s=(LNode * )malloc(sizeof(LNode));
 s->data=x;
 p->next=s->next;
 p->next=s;
 return;
}
void out_LinkList(LinkList L)
{
 LNode * p=L;
 while(p!=NULL)
 printf("%4d",p->data);
 p=p->next;
 }
void  main()
{
 int x;
 LinkList  L;
 L=Creat_LinkList();
 out_LinkList(L);
 scanf("x=%d",&x);
 Insersort( L, x);
 out_LinkList( L);
}
这是我们书上的一题目,已知带头结点的单链表L中的结点是按整数值递增排列,将值为x的结点插入表中,使得表仍有序.
上面的是我写的程序,可是我运行的时候,出现了死循环,程序哪里有错??

回复列表 (共1个回复)

沙发

在create函数里面,p指针没有生成node就用p->next=s会发生程序错误的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册