设为首页 加入收藏

TOP

2013年计算机二级C语言上机题库第十二套及答案解析
2014-11-23 21:32:08 】 浏览:5632
Tags:2013年 计算机 二级 语言 上机 题库 十二 答案 解析

  给定程序中,函数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;
  __1__ * fun(NODE *h)
  { NODE *p, *q, *r;
  p = h;
  if (p == NULL)
  return NULL;
  q = p->next;
  p->next = NULL;
  while (q)
  {
  r = q->__2__;
  q->next = p;
  p = q;
  q = __3__ ;
  }
  return p;
  }
  NODE *creatlist(int a[])
  { NODE *h,*p,*q; int i;
  h=NULL;
  for(i=0; i   { q=(NODE *)malloc(sizeof(NODE));
  q->data=a[i];
  q->next = NULL;
  if (h == NULL) h = p = q;
  else { p->next = q; p = q; }
  }
  return h;
  }
  void outlist(NODE *h)
  { NODE *p;
  p=h;
  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);
  head=fun(head);
  printf("\nThe list after inverting :\n");
  outlist(head);
  }
   解题思路:
  本题是考察使用链表方法,对链表的结点数据进行降序排列,最后通过函数进行返回。
  第一处:由于链表中的所有结果要求通过函数进行返回,所以应填:NODE *。
  第二处:中间变量r用来保存q的next指针,所以应填:next。
  第三处:q指向原q的next指针,所以应填:r。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇2013年计算机二级C语言上机题库第.. 下一篇C趣味程序(二)(05)平方根不等式

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目