2010~2011安徽大学数据结构期末试卷

2010~2011安徽大学《数据结构》期末试卷

一、单选题

从供选择的答案中选出正确的答案,将其编号填入括号中。

1、在数据结构的讨论中把数据结构从逻辑上分为( )。

A: 内部结构与外部结构 B: 静态结构与动态结构

C: 线性结构与非线性结构

2、采用线性链表表示一个向量时,要求占用的存储空间地址( )。 A: 必须是连续的 B 部分地址必须是连续的

C: 一定是不连续的

3、采用顺序搜索方法查找长度为n 的顺序表时,搜索成功的平均搜索长度为( )。

A: n

4、在一个单链表中,若q 结点是p 结点的前驱结点,若在q 与p 之间插入结点s ,则执行( )。

A: s →link = p →link ; p →link = s ;

q ;

C: p →link = s →link ; s →link = p ;

5、如果想在4092个数据中只需要选择其中最小的5个,采用( )方法最好。 A: 起泡排序 B: 堆排序

6、设有两个串t 和p ,求p 在t 中首次出现的位置的运算叫做( )。

A: 求子串 B: 模式匹配 C: 串替换 D: 串连接

7、在数组A 中,每一个数组元素A [i , j ] 占用3个存储字,行下标i 从1到8,列下标j 从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是( )。

A: 80

8、将一个递归算法改为对应的非递归算法时,通常需要使用( )。 A: 栈

9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( )。 B: 队列 C: 循环队列 D: 优先队列 B: 100 C: 240 D: 270 C: 锦标赛排序 D: 快速排序 D: q →link = s ; s →link = p ; B: p →link = s ; s →link = B: n /2 C: (n -1)/2 D: (n +1)/2 C: 可连续可不连续 D 紧凑结构与非紧凑结构

A: 4, 3, 2, 1

3, 2, 1, 4

B: 2, 4, 3, 1 C: 1, 2, 3, 4 D:

10、在循环队列中用数组A [0..m -1] 存放队列元素,其队头和队尾指针分别为front 和rear ,则当前队列中的元素个数是( )。

A: ( front - rear + 1) % m

C: ( front - rear + m ) % m

B: ( rear - front + 1) % m D: ( rear - front + m ) % m

二、阅读理解题

给出下列递归过程的执行结果。

(1) void unknown ( int w ) {

if ( w ) {

unknown ( w -1 );

for ( int i = 1; i

cout

}

}

调用语句为 unknown (4)。

(2) void unknown ( int m ) {

cout

if ( int ( n / 10 ) ) unknown ( int ( n / 10 ) );

}

调用语句为unknown ( 582 )。

(3) int unknown ( int m ) {

int value ; if ( ! m ) value = 3; else value = unknown ( m -1 ) + 5; return value ; }

执行语句为 cout

三、填空题

设单链表结构为 struct ListNode {

int data ;

}; ListNode * link ;

下面的程序是以单链表为存储结构, 实现二路归并排序的算法, 要求链表不另外占用存储空间, 排序过程中不移动结点中的元素, 只改各链结点中的指针, 排序后r 仍指示结果链

表的第一个结点。在初始状态下, 所有待排序记录链接在一个以r 为头指针的单链表中。例如,

在算法实现时,利用了一个队列做为辅助存储, 存储各有序链表构成的归并段的链头指针。初始时, 各初始归并段为只有一个结点的有序链表。队列的数据类型为Queue , 其可直接使用的相关操作有

⏹ 置空队列操作:makeEmpty ( );

⏹ 将指针x 加入到队列的队尾操作:EnQueue ( ListNode * x );

⏹ 退出队头元素, 其值由函数返回的操作:ListNode *DlQueue ( );

⏹ 判队列空否的函数, 空则返回1, 不空则返回0:int IsEmpty ( )。

解决方法提示:

程序首先对待排序的单链表进行一次扫描, 将它划分为若干有序的子链表, 其表头 指针存放在一个指针队列中。

当队列不空时, 从队列中退出两个有序子链表, 对它们进行二路归并, 结果链表的表头指针存放到队列中。

如果队列中退出一个有序子链表后变成空队列, 则算法结束。这个有序子链表即为所求。

在算法实现时有 6 处语句缺失,请阅读程序后补上。

(1) 两路归并算法

void merge ( ListNode * ha, * hb ; ListNode *& hc ) { ListNode *pa, *pb, *pc ; if ( ha →data

else pc →link = pb ;

};

(2) 归并排序主程序

void mergesort ( ListNode * r ) { ListNode * s , t ; Queue Q ;

if ( ! r ) return; s = r ; ; while ( s ) { t = s →link ; while ( t != 0 && s →data

}

四、简答题

(1) 在一个有n 个元素的顺序表的第i 个元素(1 ≤ i ≤ n )之前插入一个新元素时,需要向后移动多少个元素?

(2) 当一个栈的进栈序列为1234567时,可能的出栈序列有多少种?6457321是否是合理的出栈序列?

(3) 简单(直接)选择排序是一种稳定的排序方法吗?试举例说明?

(4) 设有序顺序表为 { 10, 20, 30, 40, 50, 60, 70 },采用折半搜索时,搜索成功的平均搜索长度是多少?

五、综合算法题

试设计一个实现下述要求的查找运算函数Locate 。设有一个带表头结点的双向链表L , 每个结点有4个数据成员:指向前驱结点的指针llink 、指向后继结点的指针rlink ,存放字符数据的成员data 和访问频度freq 。所有结点的freq 初始时都为0。每当在链表上进行一次Locate (L , x ) 操作时,令元素值为x 的结点的访问频度freq 加1,并将该结点前移,链接到与它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。

2010~2011安徽大学《数据结构》期末试卷

一、单选题

从供选择的答案中选出正确的答案,将其编号填入括号中。

1、在数据结构的讨论中把数据结构从逻辑上分为( )。

A: 内部结构与外部结构 B: 静态结构与动态结构

C: 线性结构与非线性结构

2、采用线性链表表示一个向量时,要求占用的存储空间地址( )。 A: 必须是连续的 B 部分地址必须是连续的

C: 一定是不连续的

3、采用顺序搜索方法查找长度为n 的顺序表时,搜索成功的平均搜索长度为( )。

A: n

4、在一个单链表中,若q 结点是p 结点的前驱结点,若在q 与p 之间插入结点s ,则执行( )。

A: s →link = p →link ; p →link = s ;

q ;

C: p →link = s →link ; s →link = p ;

5、如果想在4092个数据中只需要选择其中最小的5个,采用( )方法最好。 A: 起泡排序 B: 堆排序

6、设有两个串t 和p ,求p 在t 中首次出现的位置的运算叫做( )。

A: 求子串 B: 模式匹配 C: 串替换 D: 串连接

7、在数组A 中,每一个数组元素A [i , j ] 占用3个存储字,行下标i 从1到8,列下标j 从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是( )。

A: 80

8、将一个递归算法改为对应的非递归算法时,通常需要使用( )。 A: 栈

9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( )。 B: 队列 C: 循环队列 D: 优先队列 B: 100 C: 240 D: 270 C: 锦标赛排序 D: 快速排序 D: q →link = s ; s →link = p ; B: p →link = s ; s →link = B: n /2 C: (n -1)/2 D: (n +1)/2 C: 可连续可不连续 D 紧凑结构与非紧凑结构

A: 4, 3, 2, 1

3, 2, 1, 4

B: 2, 4, 3, 1 C: 1, 2, 3, 4 D:

10、在循环队列中用数组A [0..m -1] 存放队列元素,其队头和队尾指针分别为front 和rear ,则当前队列中的元素个数是( )。

A: ( front - rear + 1) % m

C: ( front - rear + m ) % m

B: ( rear - front + 1) % m D: ( rear - front + m ) % m

二、阅读理解题

给出下列递归过程的执行结果。

(1) void unknown ( int w ) {

if ( w ) {

unknown ( w -1 );

for ( int i = 1; i

cout

}

}

调用语句为 unknown (4)。

(2) void unknown ( int m ) {

cout

if ( int ( n / 10 ) ) unknown ( int ( n / 10 ) );

}

调用语句为unknown ( 582 )。

(3) int unknown ( int m ) {

int value ; if ( ! m ) value = 3; else value = unknown ( m -1 ) + 5; return value ; }

执行语句为 cout

三、填空题

设单链表结构为 struct ListNode {

int data ;

}; ListNode * link ;

下面的程序是以单链表为存储结构, 实现二路归并排序的算法, 要求链表不另外占用存储空间, 排序过程中不移动结点中的元素, 只改各链结点中的指针, 排序后r 仍指示结果链

表的第一个结点。在初始状态下, 所有待排序记录链接在一个以r 为头指针的单链表中。例如,

在算法实现时,利用了一个队列做为辅助存储, 存储各有序链表构成的归并段的链头指针。初始时, 各初始归并段为只有一个结点的有序链表。队列的数据类型为Queue , 其可直接使用的相关操作有

⏹ 置空队列操作:makeEmpty ( );

⏹ 将指针x 加入到队列的队尾操作:EnQueue ( ListNode * x );

⏹ 退出队头元素, 其值由函数返回的操作:ListNode *DlQueue ( );

⏹ 判队列空否的函数, 空则返回1, 不空则返回0:int IsEmpty ( )。

解决方法提示:

程序首先对待排序的单链表进行一次扫描, 将它划分为若干有序的子链表, 其表头 指针存放在一个指针队列中。

当队列不空时, 从队列中退出两个有序子链表, 对它们进行二路归并, 结果链表的表头指针存放到队列中。

如果队列中退出一个有序子链表后变成空队列, 则算法结束。这个有序子链表即为所求。

在算法实现时有 6 处语句缺失,请阅读程序后补上。

(1) 两路归并算法

void merge ( ListNode * ha, * hb ; ListNode *& hc ) { ListNode *pa, *pb, *pc ; if ( ha →data

else pc →link = pb ;

};

(2) 归并排序主程序

void mergesort ( ListNode * r ) { ListNode * s , t ; Queue Q ;

if ( ! r ) return; s = r ; ; while ( s ) { t = s →link ; while ( t != 0 && s →data

}

四、简答题

(1) 在一个有n 个元素的顺序表的第i 个元素(1 ≤ i ≤ n )之前插入一个新元素时,需要向后移动多少个元素?

(2) 当一个栈的进栈序列为1234567时,可能的出栈序列有多少种?6457321是否是合理的出栈序列?

(3) 简单(直接)选择排序是一种稳定的排序方法吗?试举例说明?

(4) 设有序顺序表为 { 10, 20, 30, 40, 50, 60, 70 },采用折半搜索时,搜索成功的平均搜索长度是多少?

五、综合算法题

试设计一个实现下述要求的查找运算函数Locate 。设有一个带表头结点的双向链表L , 每个结点有4个数据成员:指向前驱结点的指针llink 、指向后继结点的指针rlink ,存放字符数据的成员data 和访问频度freq 。所有结点的freq 初始时都为0。每当在链表上进行一次Locate (L , x ) 操作时,令元素值为x 的结点的访问频度freq 加1,并将该结点前移,链接到与它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。


相关文章

  • 市翠屏区教育局
  • 宜宾市翠屏区教育局 关于中学2010─2011学年下期期末教学质量目标检测的通知 各中学: 我区将于2011年6月中.下旬和7月上旬分阶段进行期末教学质量检测,6月17日和6月27--30日将对全区中学七.八年级进行部分学科结业检测和学期教 ...查看


  • (人教版)2015年初二物理下册期末试卷及答案(2)
  • (人教版)初二物理下册期末检测试题(二) 一.选择题(每题3分,共39分) 1.(2011泉州)在太空中飞行的宇宙飞船,如果它受到的一切外力消失,那么字宙飞船将 ( ) A .立即静止 B.减速飞行 C .加速飞行 D.匀速飞行 2.(20 ...查看


  • 广州各区期末试卷(初中)
  • 初一试题 语文人教版七年级上册期末试题及答案(语文) http://bbs.eduu.com/thread-1780967-1-1.html 人教版七年级上册期末试题及答案2(语文)http://bbs.eduu.com/thread-17 ...查看


  • 广西大学 基础工程 期末考试试卷
  • 大学生职业生涯规划 姓名:刘瑞龙 专业:金属材料 班级:2015级 学号:09x6401 一.自我分析 1.我的性格:大家都说我是一个活泼开朗的人,很善于与人交流,人缘也比较好,但是很多时候在一些场合缺乏自信,有的时候患得患失,总是考虑的太 ...查看


  • 2010-2011学年第一学期期末考试情况简报(二)
  • 2010-2011学年第一学期期末考试情况简报(二) 我院2010-2011学年度第一学期期末考试工作于1月14日圆满结束.本次考试工作在主管院领导的直接领导下,教务处和各系(部)密切配合,共同努力,顺利地完成了各项任务,达到了预期目的.由 ...查看


  • 2010期末考试标准试卷A卷标准答案和评分标准
  • 北京邮电大学2010--2011学年第1学期 <电磁场与电磁波>期末考试试题 一.(8分)在无限大无源空间中填充了均匀.线性.各向同性的理想介质,写出反映该空间中交变电磁场规律的积分形式麦克斯韦方程组. D Hdll ...查看


  • 三轮复习+考前计划 如何规划好高三这一年?3
  • 三轮复习+考前计划 如何规划好高三这一年?_高考指南_新课程教育在线分享到... 复制网址邮件QQ空间新浪微博MSN腾讯微博人人网开心网网易微博搜狐微博谷歌Buzz百度空间淘江湖百度搜藏豆瓣查看更多(101)这是什么工具?JiaThis 分 ...查看


  • 中央电大[旅游经济学(专科)]2011年1月期末试题及答案
  • 试卷代号:2475 中央广播电视大学2010-2011学年度第一学期"开放专科"期末考试 来源:河南学历考试网 www.xlkss.com 旅游经济学 试题 一.单项选择题(从下列每小题的四个选项中,选出一个正确的,并将 ...查看


  • 2010-2011七上期末试卷
  • 2010-2011学年度第一学期期末试卷 七年级数学 2011.01 (考试时间为120分钟 满分150分) 一.选择题 (每题3分,共30分.每题的四个选项中,只有一个选项是符合 要求的,请将正确答案的序号填入下面的表格中) 1.下列式子 ...查看


热门内容