建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
下列给定程序的功能是:建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun 的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
typedef struct as
{
int data;
struct aa *next;
}NODE;
/********found********/
fun(NODE *h)
{
int max=-1;
NODE *p;
p=h;
while(p)
{
if (p->data>max)
max=p->data;
/********found*******/
p=h->next;
}
return max;
}
outresult(int s,FILE *pf)
{
fprintf(pf,"\nThe max in link: %d\n", s);
}
NODE *creatlink (int n, init m)
{
NODE *h,*p,*s;
int i;
h=p= (NODE*)malloc(sizeof (NODE));
h->data = 9999;
for(i=1; i<=n; i++)
{
s=(NODE*)malloc(sizeof(NODE));
s->data = rand()%m;
s->next = p->next;
p->next = s;
p = p->next;
}
p->next = NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{
NODE *p;
p=h->next;
fprintf(pf,"\nTHE LIST:\n\n HEAD");
while (p)
{
fprintf(pf,"->%d",p->data);
p=p->next;
}
fprintf(pf,"\n");
}
main ( )
{
NODE *head;
int m;
head = creatlink(12,100);
outlink(head,stdout);
m = fun(head);
printf("\nTHE RESULT:\n");
outresult (m,stdout);
}
(1)错误:p=h正确:p=h->next;
(2)错误:p=h->next正确:p=p->next;