问题
填空题
[说明]
函数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;
(3)处填()
答案
参考答案:ptr!=endptr,或其他等价形式