使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。此程序的功能是建立一个带头节点的单向链表,并用随机函数为各节点数据域赋值。函数fun()的作用是求出单向链表节点(不包括头节点)数据域中的最大值

admin2023-02-27  4

问题 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。此程序的功能是建立一个带头节点的单向链表,并用随机函数为各节点数据域赋值。函数fun()的作用是求出单向链表节点(不包括头节点)数据域中的最大值,并将其作为函数笸返回。
    请改正函数fun()中的错误,使它能得出正确的结果。
    注意:部分源程序在文件modi1.c中,不要改动main()函数,不得增行或删行,也不得更改程序的结构!
    试题程序:
1 #include<stdio.h>
2 #include<conio.h>
3 #include<stdlib.h>
4 typedef struct aa
5 {int data;
6  struct aa*next;
7 }NODE;
8 fun(NODE*h)
9 {int max=-1;
10  NODE*p;
11  /*********found*********/
12  p=h;
13  while(p)
14    {if(p->data>max)
15    max=p->data;
16   /*********found*********/
17    p=h->next;
18    }
19  return max;
20 }
21 outresult(int s,FILE*pf)
22 {fprintf(pf,"\nThe max in link:%d\n",s);
23 }
24 NODE*creatlink(int n,int m)
25 {NODE*h,*p,*s;
26  int i;
27  h=p=(NODE*)malloc(sizeof(NODE));
28   h->data=9999;
29  for(i=1;i<=n;i++)
30    { s=(NODE*)malloc(sizeof(NODE));
31    s->data=rand()%m;
32    s->next=p->next;
33    p->next=s;p=p->next;
34    }
35  p->next=NULL;
36  return h;
37 }
38 outlink(NODE*h,FILE*pf)
39 {NODE * p;
40  p=h->next;
41  fprintf(pf,"\n The List:\n\n HEAD");
42  while(p)
43    {fprintf(pf,"->%d",P->data);
44    p=p->next;}
45  fprintf(pf,"\n");
46 }
47 main()
48 ( NODE*head;int m;
49  system("CLS");
50  head=creatlink(12,100);
51  outlink(head,stdout);
52  m=fun(head);
53  printf("\nThe Result:\n");
54  outresult(m,stdout);
55 }

选项

答案(1)p=h->next; (2)p=p->next;

解析 (1)因为链表的头节点没有数据域,所以对指针p进行初始化时,要将p指向头节点的下一个节点。
    (2)通过指针p的移动遍历链表,因此此处应改为p=p->next;。  
转载请注明原文地址:https://jikaoti.com/ti/SnoiFFFM
0

相关试题推荐
最新回复(0)