pop()是移除堆栈顶部的元素并且返回它的值
push()是把对象压入堆栈的顶部
1.通过对堆栈S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。输出的序列为:123。
F 231
2。若一个栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i,则第j个输出元素是j−i−1。F
栈是一种先进后出的数据结构,也就是说如果入栈顺序为 123,那么出栈顺序则为 321。题目中栈的输入序列为 1,2,3,…,n,该序列是等差为 1 的递增序列,那么出栈顺序应该为 n,n-1…,3,2,1,也就是等差为 1 的递减序列。那么当输出序列的第一个元素为i时,利用等差数列公式 an = a1+(n-1)d 可知,第 j 个元素应为 aj = i+(j-1)(-1) = i-j+1。
3.队列和栈都是运算受限的线性表,只允许在表的两端进行运算。
这句话是对的。栈和队列是两种限定性的数据结构,它们限定了插入和删除数据元素的位置,在表的两端进行。
栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。
队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。
例如同样是在线性表中 "按顺序" 插入1,2,3,4
对于栈,只允许在尾部删除,所以先出栈的将会是4,即后进先出
对于队列,只允许在头部删除,所以先出队的是1,即先进先出
4.令P代表入栈,O代表出栈。当利用堆栈求解后缀表达式1 2 3 + * 4 –
时,堆栈操作序列是:PPPOOPOOPPOOPO
5.若栈采用顺序存储方式存储,现两栈共享空间V[m]
:top[i]
代表第i
(i
=1或2)个栈的栈顶;栈1的底在V[0]
,栈2的底在V[m-1]
,则栈满的条件是:
(neuDS)下面( )问题求解过程中无须使用栈。
A.
递归调用
B.
数制转换
C.
括号匹配
D.
CPU资源管理
资源的调度与分配用到了多种分配方式,其中最简单的就是,先来先服务,后面又根据实际情况在此基础上综合了优先权和短进程等方面的考虑。所以像栈这种后进先出的就不合适了,所以D是不能的
6.若采用带头、尾指针的单向链表表示一个堆栈,那么该堆栈的栈顶指针top应该如何设置?
A.将链表头设为top
?7.用带头结点的单链表表示链式栈,其头指针为head,结点的指针域为next,则出栈操作的语句为( )
单链表实现的栈,栈顶指针为Top(仅仅是一个指针),入栈一个P节点时,其操作步骤为:
-
p->next=Top->next;Top->next=p;
单链表的栈,栈顶就是第一个节点,这里可以有两种实现:
1、top节点表示真实的栈顶节点;
2、top节点只是一个标识,其next才是栈顶节点。
对于1,入栈操作是在top前插入节点:p->next = top; top = p;
对于2,入栈操作是在top后插入节点:p->next = top->next; top->next = p;
8.给定有限符号集 S , in 和 out 均为 S 中所有元素的任意排列。 对于初始为空的栈 ST, 下列叙述中,正确的是:
9.在作进栈运算时,应先判别栈是否(①满 );在作退栈运算时应先判别栈是否(② 空)。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③n )。
10
11.变量st为sqstack型,则栈st为空的判断条件为 st.top==st.base; ,则栈st为满的判断条件为 st.top-st.base>=st.stacksize; 。
12.在一个链式栈中,若栈顶指针等于NULL,则为 空栈 ;在一个链式队列中,若队头指针与队尾指针的值相同,则表示该队列为 空 或该队列 只含有一个结点 。