2013年计算机二级C语言上机题库十六_第2页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年4月25日
  改错题
  下列给定程序中的函数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;

相关文章