第一二章习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一二章
一填空
1.衡量算法效率的两个重要指标称为算法的_时间复杂度_和空间复杂度______
2. 一个算法应具有_有穷性,确定性,可行性,输入和输出___这五个特性。
3. 线性表的长度是指_线性表中元素的个数_。
4. 在线性表的顺序存储中,元素之间的逻辑关系是通过_元素的存储(物理)地址___决定的;在线性表的链接存储中,元素之间的逻辑关系是通过_指向下一个元素的指针___决定的。
5 在双向链表中,每个结点包含两个指针域,一个指向前驱结点,另一个指向_后继__结点。
二、判断题
1.线性表的逻辑顺序与存储顺序总是一致的。(FALSE)
2.顺序存储的线性表可以按序号随机存取。(TRUE)
3.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。(FALSE)
4.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。(TRUE)
5.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。(TRUE)
6.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。(TRUE)
三、单选题 (请从下列A,B,C,D选项中选择一项)
1.线性表是(A ) 。
(A) 一个有限序列,可以为空; (B) 一个有限序列,不能为空;
(C) 一个无限序列,可以为空; (D) 一个无序序列,不能为空。
2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的(A )个元素。
(A) n/2 (B)(n+1)/2 (C) (n –1)/2 (D) n
3.线性表采用链式存储时,其地址( D ) 。
(A) 必须是连续的; (B) 部分地址必须是连续的;
(C) 一定是不连续的; (D) 连续与否均可以。
4.用链表表示线性表的优点是( C)。
(A)便于随机存取
(B)花费的存储空间较顺序存储少
(C)便于插入和删除
(D)数据元素的物理顺序与逻辑顺序相同
5. 某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( D )存储方式最节省运算时间。
(A)单链表
(B)双链表
(C)单循环链表
(D)带头结点的双循环链表
6. 循环链表的主要优点是( D ) 。
(A)不再需要头指针了
(B)已知某个结点的位置后,能够容易找到他的直接前趋
(C)在进行插入、删除运算时,能更好的保证链表不断开
(D)从表中的任意结点出发都能扫描到整个链表
7. 单链表中,增加一个头结点的目的是为了( C )。
(A) 使单链表至少有一个结点 (B)标识表结点中首结点的位置
(C)方便运算的实现 (D) 说明单链表是线性表的链式存储
8. 若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省运
算时间( B)。
(A) 单链表 (B) 顺序表 (C) 双链表 (D) 单循环链表
四、简答题
1何时选用顺序表、何时选用链表作为线性表的存储结构为宜?
答:在实际应用中,应根据具体问题的要求和性质来选择顺序表或链表作为线性表的存储结构,通常有以下几方面的考虑:
1.基于空间的考虑。当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。
2.基于时间的考虑。若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。并且,若链表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜。
2在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于哪两个因素?
答:在等概率情况下,顺序表中插入一个结点需平均移动n/2个结点。删除一个结点需平均移动(n-1)/2个结点。具体的移动次数取决于顺序表的长度n以及需插入或删除的位置i。i越接近n则所需移动的结点数越少。
3 为什么在单循环链表中设置尾指针比设置头指针更好?
答:尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear->next->next 和rear,查找时间都是O(1)。
若用头指针来表示该链表,则查找终端结点的时间为O(n)。
五、分别设计算法,实现线性表的顺序存储结构和链式存储结构的原地置逆。
第三章
一单项选择题
1.栈中元素的进出原则是(B )
A.先进先出B.后进先出C.栈空则进D.栈满则出
2.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为(C)
A.iB.n=i C.n-i+1 D.不确定
解释:当p1=n,即n是最先出栈的,根据栈的原理,n必定是最后入栈的(事实上题目已经表明了),那么输入顺序必定是1,2,3,…,n,则出栈的序列是n,…,3,2,1。
(若不要求顺序出栈,则输出序列不确定)
3.判定一个栈ST(最多元素为m0)为空的条件是(B )
A.ST->top<>0 B.ST->top= =0 C.ST->top<>m0 D.ST->top= =m0
4. 在作进栈运算时,应先判别栈是否( ① B ),在作退栈运算时应先判别栈是否( ② A )。当栈中元素为n 个,作进栈运算时发生上溢,则说明该栈的最大容量为( ③ B )。
为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的( ④ D )分别设在这片内存空间的两端,这样,当( ⑤C )时,才产生上溢。
①, ②: A. 空 B. 满 C. 上溢 D. 下溢
③: A. n-1 B. n C. n+1 D. n/2
④: A. 长度 B. 深度 C. 栈顶 D. 栈底
⑤: A. 两个栈的栈顶同时到达栈空间的中心点.
B. 其中一个栈的栈顶到达栈空间的中心点.
C. 两个栈的栈顶在栈空间的某一位置相遇.
D. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.
5. 某堆栈的输入序列为a, b,c ,d,下面的四个序列中,不可能是它的输出序列的是( D )。