阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 该程序从正文文件test.txt中读入一批整数,并将它们按照递增的顺序存放在一个链表中。其中,函数struct Link*insertChain(struct L

admin2010-12-16  50

问题 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
   [说明]
   该程序从正文文件test.txt中读入一批整数,并将它们按照递增的顺序存放在一个链表中。其中,函数struct Link*insertChain(struct Link*head,structLink*k)用来寻找结点k在链表head中的插入位置,并插入该结点。
   [C程序]
   #include  <stdio.h>
   #include <stdlib.h>
   struct Link
   {  int number;
      struct Link  *next;
   }
   struct Link *insertChain(struct Link *head,struct Link *k);
   VOid main()
   {  struct Link *ptr, *head;
      FILE *fd;
      int hum;
      if((fd=fopen("test.txt","r"))==NULL)
      {print("Cannot open this file!\n");
      return;
   }
   head=NULL;
   while(fscanf(fd,"%d",hum)==1)
   {  ptr=(1);
      if(!ptr)  return;
      ptr->number=hum;
      ptr->next=NULL;
      head=insertChain(head,ptr);
   }
     (2);
   return;
   }
   struct Link *insertChain(struct Link *head,struct Link *k)
   {  struct Link *ptr,*u;
      ptr=head;
      while(ptr  &&  k  &&  k->number>ptr->number)
   {  u=ptr;  (3) }
      if(ptr == head) head=k;
      else  (4);
       (5);
      return head;
   }

选项

答案(1)(struct Link*)malloc(sizeof (struct Link)) (2) fclose(fd) (3) ptr=ptr->next或ptr=u->next (4) u->next=k (5) k->next=ptr

解析 本题采用文件的输入方式,其主要思路:①打开文件;②从文件读入一个整数,动态申请一个结点;③将结点插入到以head为头指针的链表中;④反复执行②和③直到文件结束;⑤关闭文件。
   通过上述分析,不难得到(1)为申请结点,应该填“(struct Link*)malloc(sizeof(structLink))”;(2)为关闭文件,即fclose(fd)。在插入结点时,让u指向插入结点ptr之前,因此(3)为u的下一个结点,填“ptr=ptr->next”或“ptr=u->next”。插入结点时分为在头结点插入和u之后插入两种情况。(4)为在u之后插入的情况,应该填“u->next=k”,(5)填“k->next=ptr”。
转载请注明原文地址:https://jikaoti.com/ti/oXW7FFFM
0

最新回复(0)