C语言问题~~急

来源:百度知道 编辑:UC知道 时间:2024/06/23 13:33:49
下列程序的功能为:建立一个由小到大的单链表,请纠正程序中存在的错误,使程序实现其功能
#include<stdio.h>
#include<malloc.h>
struct Link
{ int data;
struct Link *next;
} ;
void InsertList(struct Link *H,int n)
{
struct Link *p,*q,*s;
s=(struct Link *) malloc(sizeof(struct Link));
s->data=n;
q=H;p=H->next;
while(n>p->data && p)
{
q=p;p=p->next;
}
q->next=s;
s->next=q->next;
}
void main()
{
int a[]={12,3,45,67,7,65,10,20,35,55};
int i;
struct Link *H,*p;
H=(struct Link *) malloc(sizeof(struct Link));
H->next=NULL;
for(i=0;i<10;i++)
InsertList(H,a[i]);
p=H->next;
while(p)
{
printf("%4d",p->data);
p=p->next;
}
printf("\n");
}

#include<stdio.h>
#include<malloc.h>

struct Link
{ int data;
struct Link *next;
} ;

void InsertList(struct Link *H,int n)
{
struct Link *p,*q,*s;
s=(struct Link *) malloc(sizeof(struct Link));
s->data=n;
q=H;p=H->next;

while(p!=NULL) //当p不为NULL时,才能读取p的数据
{ if(n>p->data)
q=p;p=p->next;
}
s->next=q->next;
q->next=s; //你这里有错误,插入顺序错误

}

void main()
{
int a[]={12,3,45,67,7,65,10,20,35,55};
int i;
struct Link *H,*p;
H=(struct Link *) malloc(sizeof(struct Link));
H->next=NULL;
for(i=0;i<10;i++)
InsertList(H,a[i]);
p=H->next;
while(p)
{
printf("%4d",p->data);
p=p->next;
}
printf("\n");
}