改错题 下列给定程序中的函数Creatlink的功能是:创建带头结点的单向链表,并为各结点数据域赋0到M-1的值。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!
试题程序:#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct aa
{
int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n, int m)
{
NODE *h = NULL, *p, *s;
int i;
s = (NODE*)malloc(sizeof(NODE));
h = s;
/********found********/
p->next = NULL;
for (i=1; i<n; i++)
{
s = (NODE*)malloc(sizeof(NODE));
/********found********/
s->data = rand()%m;
s->next = p->next;
p->next = s;
p = p->next;
}
s->next = NULL;
/********found********/
return p;
}
outlink(NODE *h)
{
NODE *p;
p = h->next;
printf("\n\nTHE LIST :\n\n HEAD");
while (p)
{
printf("->%d ", p->data);
p = p->next;
}
printf("\n");
}
main()
{
NODE *head;
head = Creatlink(8, 22);
outlink(head);
}
第1处:p->next=NULL;应改为p=s;
第2处:s->data=rand()%m;应改为s->data=rand()%(m-1)
第3处:return p;应改为return h;