建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档