请利用两个栈S1和S2来模拟一个队列。已知栈的三个运算定义如下:PUSH(ST,X):元素X入ST栈;POP(ST,X):ST栈顶元素出栈,赋给变量X;Sempty(ST):判ST栈空否。那么如何用栈的运算来实现该队列的三个运算:enqueue:插入一个元素入队列;dequeue:删除一个元素出队列;queue_empty:判队列为空。(请写明算法的思想及必要的注释)
正确答案
答案解析
相似试题
(简答题)
利用两个栈S1和S2模拟一个队列,如何利用栈的运算实现队列的插入和删除操作,请简述算法思想。
(单选题)
设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是()。
(单选题)
若用数组S[0..n-1]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是()。
(填空题)
若数组s[0..n-1]为两个栈s1和s2的共用存储空间,仅当s[0..n-1]全满时,各栈才不能进行栈操作,则为这两个栈分配空间的最佳方案是:s1和s2的栈顶指针的初值分别为()。
(填空题)
设有一个顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素的出栈顺序为s2,s3,s6,s5,s1则顺序栈的容量至少应为()。
(简答题)
设计函数strcmp(s1,s2)是字符串比较,根据s1,s2大小分别返回负数(s1s2)。其中负数和正数为s1和s2中第一个不同的两个字母的差值。
(填空题)
下列函数strcmp(s1,s2)是字符串比较,根据s1,s2大小分别返回负数(s1<s2),0(s1=s2),正数(s1>s2).请将缺少部分补上。其中负数和正数为s1和s2中第一个不同的两个字母的差值。
(简答题)
在最接近点对问题中,用一条垂直线L:x=m将平面点集分为大致相等的两个子集S1和S2。设P1和P2分别表示直线L的左边和右边的宽为d的两个垂直长条区域,d1和d2分别是S1和S2中最小距离,且设d=min{d1,d2}。对于P1中任意一个点p,可能和在P2中点q构成全平面点集的最接近点对的候选点对,请证明:P2中最多有6对这样的候选点对。
(单选题)
设有两个串S1和S2,求串S2在S1中首次出现位置的运算称作()。