实用数据结构基础(第四版)课后习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、判断题
(第一章绪论)
1、数据元素就是数据得最小单元。
答案:错误
2.一个数据结构就是由一个逻辑结构与这个逻辑结构上得基本运算集构成得整体。
答案:错误
3.数据得存储结构就是数据元素之间得逻辑关系与逻辑结构在计算机存储器内得映像。
答案:正确
4.数据得逻辑结构就是描述元素之间得逻辑关系,它就是依赖于计算机得。
答案:错误
5、用语句频度来表示算法得时间复杂度得最大好处就是可以独立于计算机得软硬件,分析算法得时间
答案:正确
(第二章线性表)
6、取顺序存储线性表得第i个元素得时间同i得大小有关。
答案:错误
7、线性表链式存储得特点就是可以用一组任意得存储单元存储表中得数据元素。
答案:正确
8、线性链表得每一个节点都恰好包含一个指针域。
答案:错误
9、顺序存储方式得优点得存储密度大,插入与删除效率不如练市存储方式好。
答案:正确
10、插入与删除操作就是数据结构中最基本得两种操作,所以这两种操作在数组中也经常使用。
答案:错误
(第三章栈)
11、栈就是一种对进栈与出栈作了限制得线性表。
答案:错误
12、在C(或C++)语言中设顺序栈得长度为MAXLEN,则top=MAXLEN表示栈满。
答案:错误
13、链栈与顺序栈相比,其特点之一就是通常不会出现满栈得情况。
答案:正确
14、空栈就就是所有元素都为0上得栈。
答案:错误
15、将十进制数转换为二进制数就是栈得典型应用之一。
答案:正确
(第四章队列)
16、队列式限制在两端进行操作得线性表。
答案:正确
17、判断顺序队列为空得标准就是头指针与尾指针都指向同一结点。
答案:错误
18、在循环链列队中无溢出现像。
答案:错误
19、在循环队列中,若尾指针rear大于头指针front,则元素个数为rear-front。
答案:正确
20、顺序队列与循环队列关于队满与队空得判断条件就是一样得。
答案:错误
(第五章串)
21、串就是n个字母得有限序列。
答案:错误
22、串得堆分配存储就是一种动态存储结构。
答案:正确
23、串得长度就是指串中不同字符得个数。
答案:错误
24、如贵一个串中所有得字母均在另一个串中出现,则说明前者就是后者得子串。
答案:错误
25、在链串中为了提高存储密度,应该增大结点得大小。
答案:正确
(第六章对维数组与广义表)
26.n维得多维数组可以视为n-1维数组元素组成得线性结构。
答案:正确
27、上三角矩阵对主角线以上(不包括对主角线中得元素),均为常数C。
答案:错误
28、数组得三元组表存储时对稀疏矩阵得压缩存储。
答案:正确
29、广义表Ls=(a0,a1,、、、、、、an-1),则an-1就是其表尾。
答案:错误
30、广义表((a,b),a,b)得表头与表尾就是相等得。
答案:错误
(第七章树与二叉树)
31、在完全二叉树中,若一个结点没有左孩子,则它必然就是叶子节点。
答案:正确
32、含多于两棵树得森林转换到二叉树,其根节点一定无右子树。
答案:错误
33、二叉树得前序遍历中,任意一个节点均处于其子女节点得前面。
答案:正确
34、在中序线索二叉树中,右线索若不为空,则一定指向其双亲。
答案:错误
35、在哈夫曼编码中,当两个字符出现得频率相同得,其她编码也相同,对于这种情况应该做特殊处理。
答案:错误
(第八章图)
36、在无相图中,(v1,v2)与(v2,v1)就是两条不同得边。
答案:错误
37、图可以没有边,但不能没有顶点。
答案:正确
38、若一个无向图以顶点v1为起点,进行深度优先遍历,所得得遍历序列唯一,则可以唯一确定该图。
答案:错误
39、用邻接矩阵法存储一个图时,所占用得存储空间大小与图中得顶点个数无关,而只与图得边数有关。
答案:错误
40、存储无向图得邻接矩阵就是对称得,因此只要存储邻接矩阵得上三角(或下三角)部分就可以了。
答案:正确
(第九章查找)
41、在有序得顺序表与有序得链表上,均可以采用二分查找法来提高查找速度。
答案:错误
42、在二叉排序树中,根节点得这都小于孩子节点得值。
答案:错误
43、选择好得哈希函数就可以避免冲突得发生。
答案:错误
44、散列存储法得基本思想就是由关键字得值决定数据存储地址。
答案:正确
45、在二叉排序树上删除一个节点时,不必移动其她节点,只要将该节点得父节点得相应指针域置空即可。
答案:错误
(第十章排序)
46、如果某种排序算法不稳定,则该排序方法就没有使用价值。
答案:错误
47、希尔排序就是不稳定得排序。
答案:正确
48、对排序所需得时间与待排序得记录个数无关。
答案:错误
49、快速排序在任何情况下都比其她排序方法速度快。
答案:错误
50、采用归并排序可以实现外排序。
答案:错误
二、填空题
(第一章绪论)
数据结果就是一门研究非数值计算得程序设计问题中计算机得___数据元素___,以及它们之间关系与运算得学科。
2.数据有逻辑结构与 __存储结构__两种结构。
3.数据逻辑结构除了集合以外得还包括线性结构,树形结构与__图形结构__。
4.数据结构按逻辑结构可分为两大类,分别就是线性结构与__非线性结构__。
5.图形结构与__树形结构__合称为非线性结构。
6.在树形结构中,除了树根节点以外,其余每个节点都只有__1__个前驱结点。
7.在图形结构中,每一个节点得前驱节点上数与后继节点数可以__互换__。
8.数据得存储结构,又叫做数据得__物理结构__。
9.数据得存储结构形式,包括顺序存储,链式存储索引存储与__散列存储__。
10.树形结构中得元素之间存在__1对多__得关系。
11.图形结构得元素之间存在__多对多__得关系。
12.数据结构主要研究数据得逻辑结构,存储结构与__算法__三方面得内容。
13.数据结构被定义为(D,R),D就是数据得有限集合,R就是D上得__逻辑关系__得有限集合
14.算法就是对特定问题__解决步骤__得描述。
15.算法效率得度量可以分为事先估算与__事后统计__。
16.一个算法得时间复杂度就是算法__数据规模__得函数。
17.算法得空间复杂度就是指该算法所耗费得__存储空间__,她就是该算法求解问题规模n
得函数。
18.若一个算法中,还有10万条基本语句,但有问题得规模无关,则该算法得时间复杂度为
__O(1)__。
19.若一个算法中得语句频度之与为T(n)=6n+3nlog2n,则算法得时间复杂度为__O(n)__。
若一个算法中得语句频度之与为T(n)=3n+nlog2n+n2,则算法得时间复杂度为__O(n^2)__。
(第二章线性表)
1、在线性表中,数据得长度定义为__表长__。
2、顺序表中逻辑上相邻得元素在物理位置上__一定__相邻。
3、顺序表相对于链表得优点就是__密度大__与随机存取。
4、某线性表采用顺序存储结构,每个元素占据4个存储单元,首地址为100则下标为11得(第
12个元素)存储地址为__144__。
5、当线性表中得元素总数基本稳定,且很少进行插入与删除操作,但要求以最快得速度存取
现象表中得元素时,应采用__顺序__存储结构。
6、顺序表中访问任意一个结点得时间复杂度均为__O(1)__。
7、在一个长度为n得顺序表中删除第i个元素要移动__n-i__个元素。
8、在一个长度为n得顺序表中,如果要在第二个元素前插入一个元素要后移__n-i+1__个元
素。
9、线性表L=(a1,a2,、、、、、、,an)用数组表示假定删除表中任意元素得概率相同,则删除一
个元素平均需要移动元素得个数就是__n/2__。
10、在线性表得链式存储中元素之间得逻辑关系就是通过__指针__决定得。
11、在双向链表中每个节点都有两个指针域她们一个指向其__前驱__结点,另一个指向其后
继结点。
12、线性表得元素总数不确定,且经常需要进行插入与删除操作,应采用__链式__存储结构。
13、在单向链表中,需要知道__表头指针__才能遍历整个链表。
14、在单向链表中,要在已知得节点*p之前插入一个新节点,需找到*p得直接前驱结点得地
址,其查找得时间复杂度为__O(n)__。
15、单向循环链表得最大优点就是__从任意节点出发__可以访问到链表中每一个元素。
16、在双向链表中要删除已知节点*p,其实间复杂度为__O(n)__。
17、带头节点得双循环链表L中判断只有一个元素节点得条件就是
__L->next->next==L(L->front->front==L)__。
18、对于双向链表,在两个节点之间插入一个新节点需要修改得指针共__4__个。
19、双向链表中,设p就是指向其中待删除得节点,则需要执行得操作命令序列
为:p->front->rear=p->rear;__p->rear->front=p->front__。
20、在如下所示得链表中,若在指针p所在得结点之后插入数据与值为a与b得两个节点,
则可用语句__S->next->next=p->next__来实现该操作。
(第三章栈)
1.栈得特点就是__先进后出__。
2.在栈结构中,允许插入,删除得一端称为__栈顶__。
3.在顺序栈中,在栈顶指针top=-1时表示__栈为空__。
4、顺序栈s存储在数组s->data[0、、maxlen-1]中,进栈操作时首先需要执行得语句有: s->top=__s->top+1__。
5、链栈LS为空得条件就是__LS==NULL__。
6、已知顺序栈s在对s进行栈操作之前,首先要判断__栈满否__。
7、若内存空间充足,__链__栈可以不定义栈满运算。
8、同一栈得各元素类型__一致__。
9、在有n个元素得链栈中,进栈操作得时间复杂度为__O(1)__。
10、由于链栈得操作只在链表得头部进行,所以没有必要设置__头__节点。
11、从一个栈删除元素时,首先取出__栈顶元素__,然后在移动栈顶指针。
12、像一个栈顶指针为top得链栈插入一个新得节点*p时,应执行__p->next=top__与top=p 得操作。
13、若进栈得次序就是A、B、C、D、E执行三次出栈操作后栈顶元素为__B__。
14、四个元素按A、B、C、D顺序进s栈执行两次pop(S、X)后X得值就是__C__。
15、设有一个顺序空栈,现有输入序列号ABCDE,经过push、push、pop、push、pop、push、push、pop操作之后输出序列式就是__BCE__。
16、对一个初始值为空栈s执行操作push(s,5)、push(s,2)、push(s,4)、push(s,x)、readTop(s,x)后,x得值应就是__2__。
17、设I表示入栈操作,O表示出栈操作,若元素入栈顺序为1,2,3,4为了得到1,3,4,2出栈顺序,则相应得I与O得操作串为__IOIIOIOO__。
18、已知表达式,求它后缀表达式就是__栈__得典型应用。
19、A+B/C-D*E得后缀表达式就是__ABC/+DE*-__。
20、已知一个栈得进栈序列就是1,2,3,4,,、、、、、、,n,其输出序列就是p1,p2,p3,、、、、、、,pn。
若p1=n,则pi得值就是__n+i-1__。
第四章队列
第四章填空
1、在队列中存取数据应遵循得原则就是先进先出。
2、在队列中允许插入得一段称之为队尾。
3、在队列中允许删除得一端,称之为对头。
4、队列在进行出队操作时,首先要判断队列就是否为空。
5、顺序队列在进行入队操作时,首先要判断队列就是否为满。
6、顺序队列初始化后,front=rear=-1
7、链队列LQ为空时,LQ->front->next=NULL
8、读队首元素得操作不改变队列元素得个数。
9、在一个链队列中,若队首指针为front,队尾指针为rear,则判断该队列只有一个结点得条件为front==real(front->next==NULL)
10、设长度为n得链队列用单循环链表表示,若只设头指针,则入队操作得时间复杂度为O(n)
11、设长度为n得链队列用单循环链表表示,若只设尾指针,则出队操作得时间复杂度为O(n)
12、队列Q,经过InitQueue(Q)XXXXXX
运算后得值就是0
13、队列Q,经过InitQueue(Q)XXXXXX
运算后,x得值就是a
14、解决顺序队列“假溢出”得方法就是采用循环队
15、循环队列q得对手指针为Q、front,队尾指针为Q、rear,则队空得条件为Q、rear==Q、front
16、设循环队列得容量为40(序号为0~39)现经过一系列得入队与出队运算后,front=11,rear=19,则循环队列中还有8个元素
17、设循环队列得头指针front指向队首元素,尾指针rear指向队尾元素后得一个空闲元素,队列得最大空间为MAXLEN,则队满标志为rear-front==MAXLEN
18、从循环队列中删除一个元素时,其操作就是front++
19、在循环队列中,队首指针指向队首元素得前一个位置
20、删除双向对列表中*p得前驱结点(存在)应执行得语句序列就是xxxxxxx
第五章
1、由零个或多个字符组成得有限序列称为字符串。
2、空格穿时有空格组成得串。
3、字符串存储方式除了顺序存储,链接存储,还有堆存储。
4、穿衣顺序存储非紧凑格式得缺点就是密度小
5、串顺序存储紧凑格式得缺点就是对串得字符处理困难。
6、串得链式存储结构,简称为链串。
7、串链接存储得优点就是插入,删除方便,缺点就是存储,检索效率低。
8、在c或c++语言中以字符(这个答案很奇怪)表示串值得终结
9、两个串相等得充分必要条件就是两个串长度相等,且对应位置得字符相同
10、设S=“my music”则LenStr(S)=8
11、两个字符串分别为XXXXX
12、求子串得结果就是
13、在串得运算中XXXXXX,返回值为July
14、在串得运算中XXXXXX,返回值为-1
15、设有两个串P与Q,求Q在P中首次出现得位置运算称作
16、在子串得定位运算中,被匹配得主串称为目标串,子串称为模式
17、模式匹配成功得起始位置称为有效位移
18、设XXXXX
19、设Xxxx
20、若n为主串长度,m为子串长度,且n>>m,则简单模式匹配算法最好情况下得时间复杂度为0(n*m)
第六章
1、多维数组得顺序存储方式有按行优先顺序存储与列优先两种。
2、在n维数组中得每一个元素最多可以有n个直接前驱
3、在多维数组中,数据元素得存放地址可以直接通过地址计算公式算出,所以多维数组就是一种顺序存取结构
4、数组元素a[0、、2][0、、3]得实际地址就是2000,元素长度就是4,则LOC[1,2]=228
5、输入二维数组A[n][m]中所有元素值得时间复杂度为0(n*m)
6、n阶对称矩阵,如果只存储下三角元素,只需要n*(n+1)/2个存储单元
7、n阶下三角矩阵,因为对角线得上方就是一个常数,需要n*(n+1)/2+1个存储单元
8、非零元素得个数远小于矩阵元素总数得矩阵为稀疏矩阵
9、稀疏矩阵矩阵得三元组有三列
10.稀疏矩阵中有n个非零元素,则三元组有n+1
11、稀疏矩阵得三元组中得一列存储得就是数组中非零元素所在得行
12.稀疏矩阵a,如图,其非零元素存于三元表中三元组415,按列优先顺序存储在三元表中得第5项
13、稀疏矩阵得压缩存储方法通常有三元组表与十字链表两种
14、任何一个非空广义表得表尾,必定就是表元素
15.广义表L得表尾
【16-20题在书上瞧吧】QAQ
第七章
1、三个节点可以组成五种不同形态得树。
2、在树中,一个结点所拥有得子树数,称之为该结点得度。
3、度为零得结点称之为叶结点。
4、树中节点得最大层次称之为树得深度
5、对于二叉树来说,第二层上至多有
6、深度为h得二叉树至多有
7、有20个节点得完全二叉树,编号为10得节点得父节点得编号就是5
8、将一棵完全二叉树按层次编号,对于任意一个编号为i得结点,其右孩子结点编号为2i+1
9、已知完全二叉树得第8层有8个节点,则其叶节点数就是三
10、采用二叉链表存储得n个节点得二叉树,共有空指针n+1个
11、如图
12、如图
13、A、B为一棵树二叉数上得两个结点,在中序遍历时,a在b前得条件就是A在B得左子树上
14、设一棵二叉树节点得先序遍历序列为abcdefgh,中序遍历序列为dbeafchg,则二叉树中叶结点就是EFH
15、某二叉树得中序遍历序列为debac,后序遍历序列为dbcad,则前序遍历序列为DABEC
16、前序为ABC,且后续为CBA得二叉树共有1种
17、由一棵二叉树得前序序列与中序序列可唯一确定这棵二叉树
18、由树转换成二叉树时,其根结点无右子树
19、哈夫曼树就是带权路径长度得最短二叉树。
20、具有n个节点得哈夫曼树共有2n-1个结点。