摘要:试题四(共15分)阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。[说明]函数sort(NODE*head)的功能是:用冒泡排序法对单链表中的元素进行非递减排序。对于两个相邻结点中的元素,若较小的元素在前面,则交换这两个结点中的元素值。其中,head指向链表的头结点。排序时,为了避免每趟都扫描到链表的
试题四(共15 分)
阅读以下说明和 C 语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
函数 sort(NODE *head)的功能是:用冒泡排序法对单链表中的元素进行非递减排序。对于两个相邻结点中的元素,若较小的元素在前面,则交换这两个结点中的元素值。其中,head 指向链表的头结点。排序时,为了避免每趟都扫描到链表的尾结点,设置一个指针 endptr,使其指向下趟扫描需要到达的最后一个结点。例如,对于图 4-1 (a)的链表进行一趟冒泡排序后,得到图 4-1 (b)所示的链表。
链表的结点类型定义如下:
typedef struct 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;
}
}
软考备考资料免费领取
去领取