1.设有一个栈,元素依次进栈的顺序是A、B、C、D、E,下列不可能出现的出栈顺序是()
A.A,B,C,D,E
B.B,C,D,E,A
C.E,A,B,C,D
D.E,D,C,B,A
我是解析
对于答案C,要保证E先出栈,那么ABCD四个元素只能压栈。也就是说,若出栈列以E开头,则只有一个序列,那就是选项D。
2.判定一个顺序栈st(最多元素为MaxSize)为空的条件是()
A.st-top!=-1
B.st-top==-1
C.st-top!=MaxSize-1
D.st-top==MaxSize-1
我是解析
顺序栈,即栈的顺序存储结构。顺序栈利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序表中的位置,如下图:
我们称top为栈顶指针,其初始值指向栈底,即top=base,可作为栈空的标记。每当插入新的栈顶元素时指针top增1,而删除栈顶元素时指针top减1,非空栈中的栈顶指针始终在栈顶元素的下一个位置上。
数组下表从0开始表示时,st-top==0表示栈中有一个元素,而栈空则表示为st-top==-1。
3.向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行()操作。
A.h-next=s;
B.s-next=h;
C.s-next=h;h=s;
D.s-next=h-next;h-next=s;
我是解析
链栈一般是没有附加头节点的运算受限的单链表,栈顶指针就是链表的头指针,如图
其实链栈的栈顶设在链表的头部而不设在尾部,是为了减少出栈的开销的。栈的性质决定了只能在栈顶一端操作,栈顶指针设在链表头部,方便栈操作。链栈有一个优点,那
就是链栈中的结点是动态分配的,不会出现上溢的情况。
因为本题的链栈带有头结点,并令h指向头结点,该头结点的下一个结点,才是栈顶。故而插入s所指向的结点,首先要把s-next=h-next,再令h-next=s即可完成插入新元素
作为栈顶并调整h头结点的下一个结点为新栈顶操作。
再假设,若本题的链栈,是不带有头结点的链栈,栈顶指针仍为h,则向栈中插入指针s所指向的结点时,只需将s-next=h,再令h=s即可完成插入结点s并令h指向新的栈顶操作。
计算机考研说全国最专业的计算机考研服务平台预览时标签不可点收录于话题#个上一篇下一篇