2007年上半年程序员下午试卷[4]

软考 责任编辑:zxczqj 2007-08-03

添加老师微信

备考咨询

加我微信

摘要:试题四(共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;

}

}

[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取

!
咨询在线老师!