第三章 -作业1-栈
判断
1,栈先进后出
2,若一个栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i,则第j个输出元素是j−i−1。 (2分)
不知道不确定
选择
1,给定一个堆栈的入栈序列为{ 1, 2, ~~~, n },出栈序列为{ p1, p2, ~~~, pn }。如果p2=n,则存在多少种不同的出栈序列?(2分)
1
2
n−1
n
选C,
2,从栈顶指针为ST的链栈中删除一个结点且用X保存被删结点的值,则执行: (2分)
X= ST->data; ST = ST->next;
6,若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是? (2分)
b c a e f d
c b d a e f
d c e b f a
a f e d c b
D标记号顺序
11,将5个字母ooops按此顺序入栈,则有多少种不同的出栈顺序可以仍然得到ooops? (2分)
5种,把o都标上序号,千万考虑全面
线性表、堆栈、队列的主要区别是什么?(1分)
堆栈和队列都是插入、删除受到约束的线性表
只能在堆栈的栈顶,队列的头部,所以受到约束
第三章 作业4-循环队列及线性结构综合
判断
1,所谓“循环队列”是指用单向循环链表或者循环数组表示的队列
错,将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。
存储在其中的队列称为循环队列。
这种循环队列可以以单链表的方式来在实际编程应用中来实现。
因此,循环e队列是一个抽象的数据结构,
而单向循环链表或循环数组是具体的实现方式,不是数据结构本身。
3,在顺序存储结构上都需要考虑 溢出 情况,链式存储结构不用考虑
单选题
1,若用大小为6的数组来实现循环队列,且当前front和rear的值分别为0和4。当从队列中删除两个元素,再加入两个元素后,front和rear的值分别为多少? (2分)
2和0
为什么不是二和六呢,因为大小为六,实际上存储空间也就是0-5,类似数组
2,大小为m的数组,能容纳的元素的个数时m个
3,如果循环队列用大小为m的数组表示,队头位置为front、队列元素个数为size,那么队尾元素位置rear为: (2分)
front+size
front+size-1
(front+size)%m
D,(front+size-1)%m
选D,因为队列类似于数组,是从0开始的