下列给定程序的功能是:建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。 请改正函数fun中的错误,使它能得出正确的结果。 注意:部分源程序在

admin2019-04-04  31

问题 下列给定程序的功能是:建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
    请改正函数fun中的错误,使它能得出正确的结果。
    注意:部分源程序在文件MODI1.C中,不要改动mun函数,不得增行或删行,也不得更改程序的结构!
  试题程序:
#include  < stdio.h >
#include  < conio .h >
#include  < stdlib.h >
typedef struct aa
{ int data;
   struct aa  * next;
} NODE;
fun (NODE *h)
{ int max =一1;
NODE *p;
/*********found*********/
  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. int 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  *hf FILE  *pf)
{ NODE *p;
   p =h 一 > next;
   fprintf (pf, "\n The LIST :\n\n
HEAD") ;
   while (p)
          {  fprintf (pf, " 一 > %d",p 一 > data) ;
          p =p 一 > next; }
   fprintf (pf, "\n") ;
}
main()
{NODE*head;int m;
  system("CLS");
  head=creatlink(12,100);
  outiink(head,stdout);
  m=fun(head);
  printf("\nThe RESULT:\n");
  outresult(m,stdout);
}

选项

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

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

最新回复(0)