基本信息
文件名称:初级程序员下午试题-56.pdf
文件大小:715.93 KB
总页数:8 页
更新时间:2024-09-01
总字数:约1.61万字
文档摘要

初级程序员下午试题-56

(总分:90.00,做题时间:90分钟)

一、{{B}}试题一{{/B}}(总题数:1,分数:15.00)

1.【说明】已知头指针分别为La和lb的有序单链表,其数据元素都是按值非递减排列。现要归并La和

Lb得到单链表Lc,使得Lc中的元素按值非递减排列。程序流程图如下所示:

(分数:15.00)

__________________________________________________________________________________________

正确答案:()

解析:(1)pa->data<=pb->data(2)pc->next=pa(3)pc=pb(4)pb=pb->next(5)pc->next=pa?pa:pb

[分析]本题考查程序流程图和有序链表的归并。题目要求我们归并头指针分别为La和Lb的有序单链表,

组成一个新的有序单链表Lc,而Lc又是指向La的。首先,我们来了解一下单链表的结构。单链表中一般

有两个域,一个是数据域,用来存放链表中的数据;另一个是指针域,用来存放指向下个结点的指针。其

归并的过程应该是先比较链表La和Lb中第一个元素,将较小的从其链表中取出放到k中,再取下一个结

点的值去比较,重复这个过程,直到一个链表被全部取完,再将另一个链表剩下的部分连接到Lc后面即可。

下面,我们来看程序流程图的内容。首先是用两个指针变量pa和pb分别指向La和Lb的当前待比较插入

的结点,而pc指向Lc表中当前最后一个结点。再下面是一个条件判断语句,其作用是判断链表La和Lb

是否为空,如果有一个为空,只要将另一个链表剩下的部分连接到Lc后面,程序应该就可以结束了。第

(1)空是条件判断语句的条件,根据我们上面的分析,再结合流程图下面的内容,我们可以知道,这个条件

语句的作用是比较当前待插入的两个值的大小,而指针变量pa和pb分别指向La和Lb的当前待比较插入

的结点,因此,此空的答案为pa->data<=pb->data。第(2)空是在条件为真的情况下执行的语句,如

果条件判断为真,应该将pa所指结点连接到pc所指结点后面,因此,pc所指结点的指针域应该存放pa

所指结点的地址。所以,此空的答案为pc->next=pa。第(3)空和第(4)空都是在条件为假的情况下执行

的语句,如果条件为假,说明pb所指结点的值小于pa所指结点的值,应该将pb所指结点连接到pc所指

结点后面,图中已经实现这一功能,要我们完成的是在插入后的后继工作。由于pc指向的是Lc表中当前

最后一个结点,在插入一个结点后,要修改pc的值。在将pb所指结点插入后,链表中的最后一个结点就

是pb所指结点,第(3)空的答案应该为pc=pb。执行完这些功能后,指针pb应该要往后移动,即指向下一

个结点,第(4)用来完成这个功能,所以答案为pb=pb->next。在前面,我们已经讲到如果链表La和Lb

有一个为空,只要将另一个链表剩下的部分连接到Lc后面即可。第(5)空就是用来完成这个功能的,但我

们不知道具体是哪个链表为空,还需要判断,因此,此空答案为pc->next=pa?pa:pb。

二、{{B}}试题二{{/B}}(总题数:1,分数:15.00)

2.【程序2.1说明】已知一个排好序的数组,现输入一个数,要求按原来的顺序规律,将它插入到数组中。

【程序2.1】#include<stdioh>>

输入输入已已经经排排好好序的数列:序的数列:<<输入输入输入要要要插入插入插入的数:的数:的数:

<N;i++)if(x<a[i]){{{U}}(1){{/U}}break;}for(i=N-1;i

>=p;i--){{U}}(2){{/U}}{{U}}(3){{/U}}for(i=0;i<<【程

序2.2说明】本程序用变量count统计文件中字符的个数。【程序2.2】#include