填空题

已知Q是一个非空队列,S是一个空栈。编写算法,仅用队列和栈的ADT函数和少量工作变量,将队列Q的所有元素逆置。栈的ADT函数有:voidmakeEmpty(SqStacks);置空栈voidpush(SqStacks,ElemTypee);元素e入栈ElemTypepop(SqStacks);出栈,返回栈顶元素intisEmpty(SqStacks);判断栈空队列的ADT函数有:voidenQueue(Queueq,ElemTypee);元素e入队ElemTypedeQueue(Queueq);出队,返回队头元素intisEmpty(Queueq);判断队空

正确答案

void QueueInvent(Queue q) { ElemType x; makeEmpty(SqStack s); while(!isEmpty(Queue q)) {x=deQueue(Queue q); push(SqStack s, ElemTypex);} while(!isEmpty(SqStack s)) {x=pop(SqStack s); enQueue(Queue q, ElemType x);} }

答案解析

相似试题
  • 设循环队列的元素存放在一维数组Q[0‥30]中,队列非空时,front指示队头元素的前一个位置,rear指示队尾元素。如果队列中元素的个数为11,front的值为25,则rear应指向()元素。

    单选题查看答案

  • 设栈S和队列Q的初始状态为空,元素a.b.c.d.e.f依次通过栈S,一个元素出栈后即进入队列Q。若这6个元素出队列的顺序是bdcfea.则栈S的容量至少应是()。

    填空题查看答案

  • 设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是()。

    单选题查看答案

  • 设栈S和队列Q的初始状态为空,元素e1、e2、e3 、e4、e5和e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的序列是e2 、e4 、e3 、e6、e5、e1,则栈S的容量至少应该是()

    单选题查看答案

  • 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈的容量至少应该是()。

    填空题查看答案

  • 在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入一个结点s,则执行()。

    单选题查看答案

  • 在一个单链表中,已知q所指结点是p所指结点的直接前驱,若在q和p之间插入s所指结点,则执行()操作。

    单选题查看答案

  • 在单链表中,已知q指的结点是p指的结点的直接前驱结点,若在q和p指的结点之间插入一个由s指的结点,则需执行()

    单选题查看答案

  • 在非空线性链表中由p所指的结点后面插入一个由q所指的结点的过程是依次执行语句:link(q)←link(p);link(p)←q。

    判断题查看答案