胖胖鹏鹏胖胖鹏 2014-11-07 13:53
浏览 787

[求助]单链表插入出现内存不能读取的问题

这个程序就是对一个有序单链表进行插入操作,代码如下:有问题的地方我已经标记出来:
#include
#include
#include
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}linklist;

linklist *CreatlistF()
{
int ch=0;
linklist *head,*s,*r;
head=(linklist *)malloc (sizeof (linklist));
printf("请输入单链表中元素(以0结束):\n");
r=head;
scanf("%d",&ch);
while (ch!=0)
{
s=(linklist *)malloc (sizeof (linklist));
s->data=ch;
r->next=s;
r=s;
scanf("%d",&ch);
}
r->next=NULL;
return head;
}//CreatlistF

void Insert (int x,linklist head)
{
int flag=0;
linklist *s,*p;
s=(linklist
)malloc(sizeof (linklist));
s->data=x;
s->next=NULL;
p=head;
while (p->next!=NULL)
{

    if((p->data<=x)&&(p->next->data>=x))
    {
        s->next=p->next;       **//就是这一句出现内存不能读取操作** 
        p->next=s;
        flag=1;
    } 
    if(flag) p=s->next;
    p=p->next;
}
if((p->next==NULL)&&(flag==0))
{
    p->next=s;
}

}//insert

void Output(linklist *head)
{
linklist *p;
p=head->next;
while (p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}//Output

int main ()
{
int x=0;
linklist *L;
L=CreatlistF();
printf("\n原单链表如下:\n");
Output(L);
printf("请输入您要插入的数字:\n");
scanf("%d",&x);
Insert(x,L);
printf("插入x=%d之后的单链表如下:\n",x);
Output(L);
return 1;
}//main
很费解的问题,希望各位能够帮小弟解答。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 Windows server update services
    • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
    • ¥15 模糊pid与pid仿真结果几乎一样
    • ¥15 java的GUI的运用
    • ¥15 Web.config连不上数据库
    • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
    • ¥15 怎么配置广告联盟瀑布流
    • ¥15 Rstudio 保存代码闪退
    • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
    • ¥50 invest生境质量模块