简答题

利用两个栈S1和S2模拟一个队列,如何利用栈的运算实现队列的插入和删除操作,请简述算法思想。

正确答案

利用两个栈S1和S2模拟一个队列,当需要向队列中插入一个元素时,用S1来存放已输入的元素,即通过向栈S1执行入栈操作来实现;当需要从队列中删除元素时,则将S1中元素全部送入到S2中,再从S2中删除栈顶元素,最后再将S2中元素全部送入到S1中;判断队空的条件是:栈S1和S2同时为空。

答案解析

相似试题
  • 请利用两个栈S1和S2来模拟一个队列。已知栈的三个运算定义如下:PUSH(ST,X):元素X入ST栈;POP(ST,X):ST栈顶元素出栈,赋给变量X;Sempty(ST):判ST栈空否。那么如何用栈的运算来实现该队列的三个运算:enqueue:插入一个元素入队列;dequeue:删除一个元素出队列;queue_empty:判队列为空。(请写明算法的思想及必要的注释)

    简答题查看答案

  • 设数组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中第一个不同的两个字母的差值。

    填空题查看答案

  • 设有两个串S1和S2,求串S2在S1中首次出现位置的运算称作()。

    单选题查看答案

  • s1和s2是两个结构类型变量,若要使赋值s1=s2合法,则它们的说明应该是()

    单选题查看答案