数据结构笔试题
一道选择题(此大题* * *小题* *每道小题加分)每道小题所列四个选项中只有一个符合题型要求。请在问题后的括号中填写正确选项前的字母。
算法分析的目的是(?c?)
a找出数据结构的合理性B研究算法中的输入输出关系。
C分析算法的效率是提高D分析算法的可读性。
使用(?b)更合适
单链表b双链表
c序列表d循环链表
下列关于线性表的说法错误的是(?d?)
顺序表是用一维数组实现的线性表
顺序表必须占用一个连续的存储单元。
C顺序表的空间利用率高于链表。
链表中的每个节点只有一个链域。
首节点的单链表头为空的判断条件是(b)
人头=零?B head & gt下一个=零
C head & gt下=头?D head & lt& gt无
队列通常采用两种存储结构:(a)
a顺序存储结构和链表存储结构b哈希模式和索引模式
c链表存储结构和数组D线性存储结构和非线性存储结构
根据二叉树的定义,有节点的二叉树是(?c?)物种
答?b?c?D
二叉树的结构如下图所示,其中顺序遍历的顺序是(?)
A a b d g c e f h
英国皇家航空公司
C g d b e h f c a
D a b c d e f g h
深度最多为(?c?)节点(m)
答?b?c?D
对于一个有n个顶点的无向图,如果用邻接表表示,存储头节点的数组的大小是(?答?)
一个n?B n+?C n?D n+边数
在一个有n个顶点的无向图中,至少需要(?c?)边缘
一个n?B n+?C n?d不适用
静态查找表和动态查找表的根本区别在于(?b?)
它们的逻辑结构不同。
b对它有不同的操作。
c包含不同类型的数据元素。
d存储实现不同。
Hash文件使用hash函数将记录的键值计算成记录的存储地址,因为hash函数不是一一对应的关系,所以选择一个好的(?d?)方法是哈希文件的关键。
哈希函数?b除法中的素数
冲突处理?散列函数和冲突处理
对于大文件的排序,要研究外设上的排序技术,即(C?)
快速排序方法?b-内部排序法
c外部排序法?三维交叉排序法
有无序的元素,希望以最快的速度挑出第一个最大的元素。最好选择(?c?)方法
冒泡排序b快速排序
c堆排序d基数排序
2.判断题(在题干后的括号内打√,判断后面的问题是否正确,每项打* * *分)
数据的逻辑结构是指数据元素之间的逻辑关系(?)
在线性结构中,每个节点都有一个直接前任和一个直接继任者(?)
插入和删除是数组的两个基本操作(?)
头节点(?)
在二叉树中插入一个节点,使得二叉树不再是二叉树(?)
查找表的逻辑结构是一个集合(?)
静态查找表的检索和修改分为两个不相交的阶段。)
当向索引顺序文件中插入新记录时,必须复制整个文件(?)
如果某种排序算法不稳定,这种方法就没有实际应用价值。)
最坏的情况下,需要(n)(?)
填空(给每个小问题打* * *分)
编程的本质是_ _ _ _ _ _和_ _ _ _ _ _
设字符串a='data' b='structure' c= ' ',那么A与C连接,再与B连接的结果是_ _ _ _ _ _ _ _ _。
通常单链表的头节点是指_ _ _ _ _ _单链表的头节点是指_ _ _ _ _ _ _。
一个队列的入队顺序是a b c d,队列的输出顺序是_ _ _ _ _ _ _ _ _。
栈结构中常用的两种存储结构是_ _ _ _ _ _和_ _ _ _ _ _
有n个节点的完全二叉树的深度是_ _ _ _ _ _ _ _ _
树的三种主要遍历方式是_ _ _ _ _ _ _ _ _ _ _ _ _ _和层次遍历。
在无向图的邻接矩阵A中,若a [i j]相等,则a [i j]等于_ _ _ _ _ _ _ _ _。
使用哈希技术实现哈希表时,需要考虑的两个主要问题是构造_ _ _ _ _ _ _和求解_ _ _ _ _ _。
索引顺序表上的搜索分为两个阶段()_ _ _ _ _ _ _ () _ _ _ _ _ _ _
哈希文件中的记录通常分组存储,形成一个称为_ _ _ _ _ _ _ _的存储单元。
就文件而言,从用户角度确定的基本存储单元称为_ _ _ _ _ _从外围设备角度确定的基本存储单元称为_ _ _ _ _ _ _ _ _ _
检索文档有三种方式_ _ _ _ _ _ _访问_ _ _ _ _访问和关键字访问。
最简单的交换排序方法是_ _ _ _ _ _ _ _ _排序。
外部排序的基本方法是_ _ _ _ _ _ _ _ _
四个应用问题(每个小问题得分* * *分)
假设学生档案中包含姓名、学号、年龄、性别,如果用线性表作为数据结构实现档案管理,分别给出了线性表在顺序实现和链接实现下的类型定义。
有一条消息* * *用了a b c d e五个字符,它们出现的频率依次是。请构造相应的霍夫曼树(左子树根节点的权值小于等于右子树根节点的权值),找出每个字符的霍夫曼码。
有一个初始的无序序列,它给出了{}每次合并和排序(升序)的结果
五个设计问题(每个小问题* * *分)
假设使用循环单链表来表示队列(称为循环链队列)。该队列中只有一个队列尾指针,但没有队列尾指针。请写出将一个元素X插入循环链队列的过程。
以邻接表为存储结构写连通图的深度优先搜索算法
有一组关键字{},使用哈希函数H(key)=key MOD来解决冲突。尝试在~的哈希地址空间中为这个关键字序列构造一个哈希表
数据结构概论试题参考答案
1道选择题(每道小题得分* * *分)?c?b?d?b?A
c?b?c?答?C
商务英语
2.是非题(每个小问题得分* * *分)
× ?× ?×?× ?×?
√ ?√ ?× × √?填空(每道小题* * *分)?()数据表示?()数据处理?“数据结构”?()在单链表的第一个节点前添加一个同类型的节点。
()表节点中的第一个节点?a b c d?()顺序存储结构?()链表存储结构
〔记录N〕+
()先根遍历?()根后遍历
()哈希函数?()冲突
()确定要检查的元素所在的块()在块中找到要检查的元素。
水桶
()逻辑结构?()物理结构
()订单?()直接
冒泡排序?合并四道应用题(每道小题得分* * *分)?顺序实现
const maxsize∶;=;{顺序表容量}?类型数据类型=记录{文件数据类型}
name∶string『string』;{姓名}
数字∶整数;{学生编号}
性别∶布尔;{性别}
年龄∶整数;{年龄}
结束;
类型slist =记录
数据类型的数据∶数组〔 maxsize〕
last∶integer;
结束;
链接实现
类型指针=↑节点;
节点=记录
name∶string『string』;{姓名}
编号:interger {学生编号}
性别∶布尔;{性别}
年龄∶整数;{年龄}
next∶指针;{节点的后续指针}
结束;
list =指针;
霍夫曼树是
相应的霍夫曼代码是
答:?b:?c:?d:?e:
画出正确的霍夫曼树,写出相应的霍夫曼代码。
初始无序序列
{ } { } { } { } { } { } { }{ } { }{ }
第一次合并{} {}?{ }?{ }
第二次合并?{ } { ?}?{ }
第三次合并{?}?{ }
第四次合并{}
五个设计问题(每个小问题* * *分)
过程插入(VAR rear∶pointer;x∶整数);
VAR head tmp∶pointer;
开始
新(tmp);
tmp↑data⊙= x;
If (rear = nil)则{循环队列为空,新节点是队列的第一个节点}
开始
后方:⊙= tmp;
后方↑下一个≑= tmp;
结束
否则{队列不为空。在队列末尾插入新节点}
开始
头≑=后↑下一个;
后方↑下一个≑= tmp;
后方:⊙= tmp;
后方↑下一个≑=头部;
结束
结束;
程序dfs(g:调整列表;v∶整数);
{来自V的深度优先遍历图G }
开始
写(五);
已访问(v)∴= true;?{访问过的旗帜v }
p = g〔v〕link;?{找到V的第一个相邻点}
而p & lt& gt没有
〔如果没有(访问过〔p〕顶点〕
然后dfs(g p↑顶点);
p:= p = next {求V的下一个相邻点}
结束;
以邻接表为存储结构的连通图的深度优先搜索是顺序搜索链表。
施工流程如下
H( )= MOD =
H( )= MOD =
H( )= MOD =
H( )= MOD =(冲突)
H( )=( + ) MOD =
H( )= MOD =
H( )= MOD =
H( )= MOD =(冲突)
H( )=(+) MOD =(仍然冲突)
H( )=( + ) MOD =
H( )= MOD =(冲突)
H( )=(+) MOD =(冲突)
H( )=(+) MOD =(仍然冲突)
H( )=( + ) MOD =
H( )= MOD =(冲突)
H( )=(+) MOD =(仍然冲突)
H( )=( + ) MOD =
H( )= MOD =
H( )= MOD =(冲突)
H( )=(+) MOD =(仍然冲突)
H( )=( + ) MOD =
H( )= MOD =(冲突)
H( )=( + ) MOD =
因此,每个关键字对应的地址分配如下
地址()=
地址()=
地址()=
地址()=
地址()=
地址()=
地址()=
地址()=
地址()=
地址()=
地址()=
地址()=
Lishi Xinzhi/Article/program/sjjg/201404/30585