阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明1] L为一个带头结点的循环链表。函数LinkList deletenode(LinkList L,int c)的功能是删除L中数据域data的值大于C的所有结点,并

admin2010-12-16  39

问题 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
   [说明1]
   L为一个带头结点的循环链表。函数LinkList deletenode(LinkList L,int c)的功能是删除L中数据域data的值大于C的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。
   [C函数1]
   LinkList deletenode(LinkList L,int c)
   {LinkList Lc,P,pre;
   pre=L;
   p=(1);
   Lc=(LinkList)malloc(sizeof(Listnode));
   Lc->next=Lc;
   while(P!=L)
   if(p->data>C){
     (2);
     (3);
   Lc->next=p;
   p=pre->next;
   }
   else{
   pre=p;
   p=pre->next;
   }
   return Lc;
   }
   [说明2]
   递归函数dec_to_k_2(int n,int k)的功能是将十进制正整数n转换成k(2≤k≤9)进制数,并打印。
   [C函数2]
   dec to k 2(int n,int k)
   {  if(n!=O){
   dec to k 2( (4) ,k);
   printf("%d", (5) );
   }
   }

选项

答案(1) pre->next或L->next (2) pre->neXt=p->next (3) p->next=Lc->next (4) n/k (5) n%k

解析 函数1是考察链表的删除和插入的操作。(1)空所在语句是对指针P赋初值,应填“pre->next”或“L->next”,通过下面的程序可以判断指针pre所指的结点是指针p所指结点前驱结点。(2)、(3)空所在的语句块是处理当指针p所指的结点是一个大于C的结点,则将该结点从链表L中删除,再将它插入到链表Lc中。分别填“pre->next=p->next”和“p->next=-Lc->next”  。
   函数2是一个递归函数,采用除k取余法。最开始得到余数作为k进制数的最低位,最后得到的余数作为k进制数的最高位。用递归法求解时,先将n/k转换成k进制,再输出n%k。因此(4)填“n/k”,(5)填“n%k”。
转载请注明原文地址:https://kaotiyun.com/show/s6jZ777K
0

最新回复(0)