(简答题)
假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。试编写实现这个双向栈tws的三个操作:初始化inistack(tws)、入栈push(tws,i,x)和出栈pop(tws,i)的算法,其中i为0或1,用以分别指示设在数组两端的两个栈,并讨论按过程(正/误状态变量可设为变参)或函数设计这些操作算法各有什么有缺点。
正确答案
答案解析
略
相似试题
(填空题)
对于栈和队列,无论它们采用顺序存储结构还是链接存储结构,进行插入和删除操作的时间复杂度都是()。
(填空题)
当用长度为n的数组顺序存储一个栈时,若用top==n表示栈空,则表示栈满的条件为()。
(填空题)
当用长度为N的一维数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件为()。
(单选题)
假定利用数组A[N]顺序存储一个栈,top表示栈顶指针,已知栈未满,则x入栈时所执行的操作是()。
(单选题)
当利用大小为N的一维数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。
(单选题)
如果以链表作为栈的存储结构,则退栈操作时()
(单选题)
假定利用数组a[m]顺序存储一个栈,用top表示栈顶指针,用top= =0表示栈满,该数组所能存储的栈的最大长度为m,当()时,再做退栈运算会发生“下溢”。
(简答题)
试以顺序表作存储结构,写一实现线性表就地逆置的算法。
(单选题)
假定利用数组a[n]顺序存储一个栈,用top表示栈顶指针,用top==n+l表示栈空,该数组所能存储的栈的最大长度为n,则表示栈满的条件是()