2011年计算机二级C语言第九十四套上机题库及答案

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  一、填空题:给定程序中,函数fun的功能是将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为: 10、8、6、4、2。

  请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

  注意:源程序存放在考生文件夹下BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  #define N 5

  typedef struct node {

  int data;

  struct node *next;

  } NODE;

  void fun(NODE *h)

  {NODE *p, *q, *r;

  /**********found**********/

  p = h->__1__;

  /**********found**********/

  if (p==__2__) return;

  q = p->next;

  p->next = NULL;

  while (q)

  {r = q->next; q->next = p;

  /**********found**********/

  p = q; q = __3__;

  }

  h->next = p;

  }

  NODE *creatlist(int a[])

  {NODE *h,*p,*q; int i;

  h = (NODE *)malloc(sizeof(NODE));

  h->next = NULL;

  for(i=0; i

  {q=(NODE *)malloc(sizeof(NODE));

  q->data=a[i];

  q->next = NULL;

  if (h->next == NULL) h->next = p = q;

  else {p->next = q; p = q;}

  }

  return h;

  }

  void outlist(NODE *h)

  {NODE *p;

  p = h->next;

  if (p==NULL) printf("The list is NULL!/n");

  else

  {printf("/nHead ");

  do

  {printf("->%d", p->data); p=p->next;}

  while(p!=NULL);

  printf("->End/n");

  }

  }

  main()

  {NODE *head;

  int a[N]={2,4,6,8,10};

  head=creatlist(a);

  printf("/nThe original list:/n");

  outlist(head);

  fun(head);

  printf("/nThe list after inverting :/n");

  outlist(head);

  }

  解题答案:

  /**********第一空**********/

  p = h->next;

  /**********第二空**********/

  if (p==0) return;

  /**********第三空**********/

  p = q; q = r;

  ******************************************

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答