问题 问答题

【说明】

函数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)ptr -> next

(2)head->next

(3)ptr !=endptr,或其等价形式

(4)ptr

(5)preptr

解析:

 本题考查链表运算能力。 从题目中的以下代码可知,ptr最后应指向表尾结点。 ptr = head -> next; while ( (1) ) /*查找表尾结点*/ ptr = ptr -> next; endptr = ptr; /*令endptr指向表尾结点*/ 显然,空(1)处应填入“ptr->next”,这样循环结束时,ptr指向表尾结点。若填入“ptr”,则循环结束时,ptr为空指针。 进行冒泡排序时,从头至尾依次比较逻辑上相邻的两个结点的数据,如果小元素在前大元素在后,则交换。这样,经过一趟扫描,就将最大元素交换到了表的最后。下一趟可将次大元素交换到最大元素之前。显然,空(2)处应填入“head->next”。 由于程序设置的endptr用于指示出每趟扫描需到达的最后一个结点,ptr用于依次扫描链表中的结点,因此空(3)处的循环条件为“ptr != endptr”。 显然,指针preptr起的作用是指向ptr的前驱结点,因此,ptr每向后修改一次,相应地preptr就要修改一次,空(4)处应填入“ptr”。本趟循环结束后,下一趟扫描也就确定了,因此在空(5)处填入“preptr”。

阅读理解与欣赏

阅读下面的文字,完成1~4题。

说林冲

  金圣叹说:“林冲自然是上上人物。这般人在世上,定做得事业来,然琢削元气也不少。”

  如果林冲生活在现在,他也许会成为一个非常幸福和成功的中产阶级的一员。林冲的可爱,就在于“可靠”。他是一个可靠的丈夫,一个可靠的朋友,一个可靠的下属和同僚。他不会轻易动情,但一旦选择了某位女子他会为其一生负责;他一旦成为你的朋友,你可对他托付一切;对上司对同僚,他会永远抱一种有距离的尊重,他会兢兢业业做好自己的分内工作,而不轻易涉及人事上的是是非非。

  林冲是个优秀的军事教官,不但业务水平出众,而且没有野心,不与官场的大多数人同流合污。尽管他精细过人,但还是着了高太尉的道。高太尉、陆虞候正是利用林冲忠于职守、同情弱者、热爱本职的“软肋”,才能诱骗他进了白虎堂。

  火并王伦,林冲为了梁山的大业,甘愿被吴用利用;晁盖死后,梁山群龙无首,又是林冲出面力主宋江代理老大的位置,避免了梁山的分裂。两次梁山发展最关键的时刻,都是林冲立了大功,而且不为私利,功成身退,低调行事。当王伦要他杀一个无辜的路人来做“投名状”时,走投无路的林冲一定心怀异常的悲痛,一个遵纪守法的朝廷军官,不得已上了梁山,还要滥杀无辜才能被土匪接纳,——必须在精神上自虐与自污方可为匪!对一个爱惜羽毛的人来说意味着什么?后来他遇见了杨志,两人不分胜负,“投名状”到底没有拿来。——这是施耐庵对这位真男子的爱护。林冲,即使落了草,至死他的品行是高洁的。

  林冲这样的真汉子,如果生逢其时,完全可以建功于边廷,立千秋万世不朽之名;或者即使不能被重用,在一个正常的现代社会里,也能凭自己的本事、自己的品行赢得尊重,过着平常而幸福的生活。可惜他生活在一个是非颠倒的社会,一个淘汰良民的社会,一个扼杀精英的社会,一个必须牺牲人性才能生存显达的社会。尤其像林冲,做一爱岗敬业的职业军官不可得,做一爱家护妻的好丈夫而不可得。他要么像陆虞候、富安那样,牺牲自己的良心,自己污辱自己的品行,巴结权贵以求显达;要么就只能去当杀人放火的草寇。没有中间的道路可让他们选择。这是林冲的悲哀,也是大宋的悲哀

1.下列对文意的理解和分析,不正确的两项是(     )

A.林冲的可靠,主要表现为对家人负责,对朋友忠诚,对上司和同僚敬而有度,对工作兢兢业业。

B.林冲不肯与官场同流合污,又精细过人,结果聪明反被聪明误,遭高太尉等人诱骗,误入白虎堂。

C.火并王伦、力推宋江等情节说明林冲为梁山大业着想,不存一己私心,更没有争权夺利的野心。

D.王伦要林冲杀无辜路人来做“投名状”,对林冲的打击巨大,因为这样做违背了他做人的原则。

E.正是由于林冲精于业务、为人忠诚、没有野心,才遭到了以高俅为首的利益团伙的嫉妒和迫害。

2.本文认为施耐庵对林冲持什么态度?本文作者对林冲持什么态度?引用金圣叹的话有什么作用?

答:_______________________________________________________

3.文章结尾说“这是林冲的悲哀,也是大宋的悲哀”,这句话如何理解?

答:_______________________________________________________

4.作为一篇人物评论,本文在写法上具有怎样的特点?这给你怎样的写作启示?

答:_______________________________________________________

问答题 简答题