当前位置:文档之家› 数据结构期中试卷

数据结构期中试卷


4
数据结构期中练习答案
一、单选题 1、 D 2 、C 3、C 4、 A 5、D 6、 C 7、 D 8、C 9、 C 10、C
二、判断题 1、 F 2 、T 3、F 4、 T 5、F 6、 T 7、 F 8、F 9、 T 10、T
三、解答题 1、在顺序表中插入和删除一个节点需平均移动多少节点?具体移动次数取决于哪两个因
8
{ ListNode *p , *q , *h; p=L->next; while( p && p->data <=min ) { //找比 min 大的前一个元素位置 q=p; p=p->next; } p=q; //保存这个元素位置
while( q && q->data < max ) //找比 max 小的最后一个元素位置 { q=q->next; } h=p->next; p->next=q; free(h); } 2 、假设称正读和反读都相同的字符序列为“回文” ,例如,’abba’和’abcba’是回 文, ’abcde’和’ababab’则不是回文。 试写一个算法判别读入的一个以’@’为结束符序 列是否是“回文” 。 答: Status SymmetryString(char* p) { Queue q; if(!InitQueue(q)) return 0; Stack s; InitStack(s); ElemType e1,e2; while(*p){ Push(s,*p); EnQueue(q,*p); p++; } while(!StackEmpty(s)){ Pop(s,e1);
3
(1)用直接插入排序。试以排序码序列的变化描述形式说明排序全过程(动态过程) ,要求 按递减顺序排列。 (2)用直接选择排序。试以排序码序列的变化描述形式说明排序全过程(动态过程) ,要求 按递减顺序排序。 (3)直接插入排序算法和直接选择排序算法的稳定性如何? 四、算法题 1、已知单链表 L 是一个递增有序表,试写一算法,删除表中值大于 min 且小于 max 的节点 (若表中有这样的节点) , 同时释放被删除节点的空间, 这里 min 和 max 是两个给定的参数。 2 、假设称正读和反读都相同的字符序列为“回文” ,例如,’abba’和’abcba’是回 文, ’abcde’和’ababab’则不是回文。 试写一个算法判别读入的一个以’@’为结束符序 列是否是“回文” 。 3、写出二分法顺序查找有序表的算法。 4、设计一个算法,修改冒泡排序过程以实现双向冒泡排序。所谓双向冒泡排序,是指每一 趟通过每两个相邻的关键字进行比较,产生最小和最大的元素。
6
14 移动: 21, 07,17,10,14,[28], 61, 65,50,39
5、 已知序列{10,18,4,3,6,12,1,9,18,8}, 试给出采用归并排序法对该序列作升序排序时的 每一趟的结果。 答:初始:10,18, 4,3, 6,12,1, 9,18,8 第 1 趟: [10,18][3, 4][ 6,12][1,9][8,15] 第 2 趟: [ 3, 4,10,18][1,6,9,12][8,15] 第 3 趟: [ 3, 4,10,18][1, 6,8,9,12,15] 第 4 趟: [1, 3, 4, 6,8, 9,10,12,15,18] 第 4 趟归并完毕,则排序结束。
10、快速排序在( A. B.
)情况下最不利于发挥其长处。
要排序的数据量太大 要排序的数据中含有多个相同值
2
C. D.
要排序的数据已基本有序 要排序的数据个数为奇数
二、判断题 1、线性表的线性结构体现在每个元素都有一个直接前驱和一个直接后继( 3、构成循环链表需要增加存储空间( 构中效率高( ) ) ) ) ) ( ) ) 2、 在线性表的顺序存储结构中, 逻辑上相邻的数据元素在物理位置上也是相邻的 (
已知某个节点的位置后,能很容易找到它的直接前驱节点 在进行删除操作后,能保证链表不断开
1
D.
从表中任一节点出发都能遍历整个链表
6、若循环队列以数组 Q[0...m - 1] 作为其存储结构,变量 rear 表示循环队列中队尾元素的 实际位置, 其移动按 rear = (rear + 1) mod m 进行, 变量 length 表示当前循环队列中的 元素个数,则循环队列中的队首元素的实际位置是( A. B. C. D. )
rear - length (rear - length + m) mod m (1 + rear - length + m) mod m m - length
7、在( A. B. C. D.
)存储结构中,数据结构中元素的存储地址与其关键字之间存在某种映射关系
顺序(Sequence) 链表(Link) 索引(Index) 、 散列(Hash) )
4、 若已知一个栈的进栈序列是1, 2,3,..., n , 其输出序列为 p1 , p2 , p3 ,..., pn , 若 p3 = 1 , 则 p2 为( A. B. C. D. )
可能是 2 一定是 2 不可能是 2 不可能是 3 )
5、循环链表的主要优点是( A. B. C. 不再需要头指针了
é ù ë小于K10的... û K10 é ë大于K10的...ù û
对小于 K10 的 9 个元素的无序序列采用直接插入排序就可产生 {K1 , K 2 ,..., K 9 } 的有序 排列了。使用上述的先用快速排序一趟,再用直接插入排序的组合排序方式,比较的次 数最少。
7、设待排序的记录共 7 个,排序码序列为{8,3,2,5,9,1,6} (1)用直接插入排序。试以排序码序列的变化描述形式说明排序全过程(动态பைடு நூலகம்程) ,要求 按递减顺序排列。
7
(2)用直接选择排序。试以排序码序列的变化描述形式说明排序全过程(动态过程) ,要求 按递减顺序排序。 (3)直接插入排序算法和直接选择排序算法的稳定性如何? 答:(1)直接插入排序 第 1 趟 : ( 3) [8,3] , 2,5,9,1, 6 第 2 趟: ( 2 ) [8,3, 2] ,5,9,1, 6 第 3 趟 : ( 5 ) [8,5, 3, 2] , 9,1, 6 第 4 趟 : ( 9 ) [ 9,8,5,3, 2] ,1, 6 第 5 趟 : (1) [9,8,5,3, 2,1] , 6 第 6 趟 : ( 6 ) [ 9,8, 6,5,3, 2,1] (2)直接选择排序(第六趟后仅剩一个元素,是最小的,直接选择排序结束) 第 1 趟: ( 9 ) [ 9] , 3, 2,5,8,1, 6 第 2 趟 : ( 8 ) [9,8] , 2,5,3,1, 6 第 3 趟 : ( 6 ) [ 9,8, 6] ,5,3,1, 2 第 4 趟 : ( 5 ) [9,8, 6,5] ,3,1, 2 第 5 趟 : ( 3) [9,8, 6,5,3] ,1, 2 第 6 趟 : ( 2 ) [ 9,8,6,5,3, 2] ,1 (3)直接插入排序是稳定排序,直接选择排序是不稳定排序。
四、算法题 1、已知单链表 L 是一个递增有序表,试写一算法,删除表中值大于 min 且小于 max 的节点 (若表中有这样的节点) , 同时释放被删除节点的空间, 这里 min 和 max 是两个给定的参数。 答: void DeleteList ( LinkList L, DataType min , DataType max)
2、给定一个有 n 个元素的有序线性表,若采用顺序存储结构,则在等概率的前提下,删除 其中的一个元素平均需要移动( )个元素?
n +1 2 n B. 2 n -1 C. 2 D. 1
A. 3、有六个元素按 6,5,4,3,2,1 的顺序进栈,下面哪一个不是合法的出栈序列?( A. B. C. D. 5 4 3 6 1 2 4 5 3 1 2 6 3 4 6 5 2 1 2 3 4 1 5 6 )
4、链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结 5、对同一组输入序列进行合法的入、出栈操作,得到的输出序列一定相同( 6、若以链表作为栈的存储结构,则退栈操作时必须判别栈是否为空( 7、如果两个串含有相同的字符,则这两个串相等( 8、串中任意个字符组成的子序列称为该串的子串( 法是不稳定的( ) ) ) )
数据结构期中练习 学号_____________ 姓名_____________ 一、单选题 1、下面哪一个不是顺序表的特点( A. B. C. D. ) 逻辑上相邻的元素,存储在计算机中相邻的存储单元 插入一个元素,平均要移动表长一半的数据元素 用动态一维数组存储顺序表最合适 在顺序表中查找一个元素与表中元素的分布没有关系
3、试叙述冒泡排序的基本思想。 答:在每一趟的排序过程中,通过相邻的两个记录的关键字比较,有反序则交换;如果该趟 比较没有记录交换或已经进行了 n-1 次比较, 则算法结束, 否则继续进行下一趟的排序 过程。
4、对给定序列{28,07,39,10,65,14,61,17,50,21},选择第一个元素 28 进行划分,写出其 快速排序第一遍的排序过程。 答:初始序列: [28], 07,39,10, 65,14, 61,17, 50, 21 21 移动: 21, 07,39,10, 65,14, 61,17,50,[] 39 移动: 21, 07,[],10, 65,14, 61,17, 50,39 17 移动: 21, 07,17,10, 65,14, 61,[], 50,39 65 移动: 21, 07,17,10,[],14, 61, 65, 50,39
5
素? 答:在等概率情况下,顺序表中插入一个节点需平均移动 移动
n -1 个节点,具体移动次数取决于顺序表的长度 n 以及需插入或删除的位置 i,i 2
n 个节点。删除一个节点需平均 2
相关主题