阅读以下说明和C语言函数,回答问题。 [说明] 函数sort(NODE*head)的功能是:用冒泡排序法对单链表中的元素进行非递减排序。对于两个相邻节点中的元素,若较小的元素在后面,则交换这两个节点中的元素值。其中,head指向链表的头节点。排序时,

admin2012-04-11  52

问题 阅读以下说明和C语言函数,回答问题。
[说明]
   函数sort(NODE*head)的功能是:用冒泡排序法对单链表中的元素进行非递减排序。对于两个相邻节点中的元素,若较小的元素在后面,则交换这两个节点中的元素值。其中,head指向链表的头节点。排序时,为了避免每趟都扫描到链表的尾节点,设置一个指针endptr,使其指向下趟扫描需要到达的最后一个节点。例如,对于图8-25(a)所示的链表进行一趟冒泡排序后,得到图8-25(b)所示的链表。

链表的节点类型定义如下:
   typedef Struet Node {
     int data;
     struct Node *next;
   }NODE;
   [C语言函数]
   void sort(NODE *head)
   {
     NODE *ptr, *preptr, *endptr;
     int tempdata;
     ptr=head->next;
     while  (1)     /*查找表尾节点*/
       ptr=ptr->next;
     endptr=ptr;     /*令endptr指向表尾节点*/
     ptr=  (2)  ;
     while(ptr!=endptr)
     {
       while(  (3)  )
       {
           if(ptr->data>ptr->next->data)
           {
              tempdata=ptr->data;     /*交换相邻节点的数据*/
              ptr->data=ptr->next->data;
              ptr->next->data=tempdata;
           }
           preptr=  (4)  ;ptr=ptr->next;
        }
        endptr=  (5)  ; ptr=head->next;
     }
   }

选项

答案ptr->next head->next ptr!=endptr,或其他等价形式 ptr preptr

解析
转载请注明原文地址:https://jikaoti.com/ti/IvL7FFFM
0

最新回复(0)