`
bliuqing
  • 浏览: 67113 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

用两个栈实现一个队列的功能

阅读更多
【转】http://hi.baidu.com/liangjw821/blog/item/74c98ed520f299cc51da4b86.html
原题:

用两个栈实现一个队列的功能?

思路:

假设两个栈 A 和B,且都为空。
可以认为栈 A 为提供入队列的功能,栈 B 提供出队列的功能。
入队列: 入栈 A
出队列:
1 如果栈B 不为空,直接弹出栈 B 的数据。
2 如果栈 B 为空
2.1 若A不为空,则依次弹出栈 A 的数据,放入栈 B 中,再弹出栈 B 的数据。
2.1 若A为空,则队列为空。
int enqueue(stack s1,elemtp x)
{
    PUSH(s1,x);
    return(1);
}

ElementType  dequeue(stack s2,stack s1)
{
    if(!empty(s2))//s2 is not empty
    {
         return POP(s2);
    }
    else
    {
     if(empty(s1)
     {    printf("队列为空"); exit(0);
     }
      else
       {
             while(!empty(s1)
             {
                 ElementType t;
                 POP(s1,t);
                 push(s2,t); 
             }  
             return pop(s2);
       }
    }
}
分享到:
评论

相关推荐

    两个栈实现一个队列

    要使用两个栈实现队列,我们需要一个入队栈(pushStack)和一个出队栈(popStack)。入队操作(enqueue)相当于向pushStack中添加元素,而出队操作(dequeue)则涉及将pushStack中的元素转移到popStack,然后从pop...

    C语言用两个栈实现一个队列的功能

    用量个栈实现一个队列,使其可以有进队和出队的操作。

    用两个栈实现一个队列的功能?要求给出算法和思路

    ### 使用两个栈实现队列功能 #### 背景与目的 在计算机科学领域中,数据结构是存储和组织数据的方式之一,对于提高程序效率至关重要。队列是一种先进先出(FIFO)的数据结构,而栈则是一种后进先出(LIFO)的数据...

    C++数据结构实验_实现共享栈,链栈,循环队列,链队列

    在C++中,循环队列通常用数组实现,通过两个指针分别指向队头和队尾,队列的入队(enqueue)和出队(dequeue)操作可以通过简单的指针移动来完成,避免了数组扩容的开销。 最后,我们讨论链队列。链队列是基于链表...

    C++实现用栈实现队列的功能

    标题“C++实现用栈实现队列的功能”表明我们将使用C++编程语言,通过创建两个栈来实现队列的主要功能:入队(enqueue)和出队(dequeue)。这种方法的思路是,一个栈用于入队操作,另一个栈用于出队操作,以此来克服...

    03-用两个栈实现一个队列.md

    在分析算法的时间复杂度时,我们发现如果用两个栈实现队列,add操作的时间复杂度为O(1),delete操作的时间复杂度可能为O(n),因为在某些情况下我们需要将stack1中的所有元素转移到stack2中。然而,在实际操作中,...

    C语言实现栈与队列

    - `libQueue.c` 和 `libQueue.h`:这是实现队列功能的源代码文件。`libQueue.c`包含了队列的实现,如初始化、插入、删除等操作;`libQueue.h`则是头文件,声明了相关的函数接口供其他模块调用。 - `libStack.c` 和...

    python-用两个栈实现一个队列(csdn)————程序.pdf

    通过这种方式,我们可以有效地用两个栈实现队列的基本功能,即“入队”和“出队”。 这种数据结构设计思路在实际编程中有着广泛的应用,比如在解决某些限制内存访问顺序的问题时,或者在需要高效地进行特定操作(如...

    JS实现利用两个队列表示一个栈的方法

    在本文中,作者通过创建一个名为`Queue`的构造函数来实现队列,该构造函数具有push、pop、size和display方法。然后,使用两个这样的队列(arr1和arr2)来模拟栈的行为。以下是关键步骤: 1. 当需要push元素时,可以...

    C/C++之用两个栈实现一个队列的功能

    问题:有两个栈s1和s2,实现队列的push和pop功能。  一般思路:始终维护s1作为存储空间,并以s2作为临时缓冲区。s1实现入队操作,s2实现出队操作。  1,入队时,将元素压入s1。  2,出队时,将s1的元素逐个...

    剑指offer刷题记录之用两个栈实现队列

    要求用两个栈{stack1,stack2}实现一个队列,也就是说我们需要使用栈的push和pop功能来构造队列的push和pop功能。 栈我们用列表表示,相应的功能使用append和pop函数实现。 队列的push功能: 使用stack1来存储元素,...

    两个stack来模拟实现一个队列

    本篇将详细解释如何使用两个栈(stack)来模拟实现一个队列(queue)的功能。 首先,我们要理解栈和队列的基本特性。栈是一种后进先出(LIFO,Last In First Out)的数据结构,其操作主要包括压入(push)和弹出...

    用多个栈来模拟队列

    通过两个栈 `s1` 和 `s2` 来模拟队列的操作,不仅可以实现队列的基本功能,而且还能保证良好的性能。这种方法的关键在于有效地利用了栈的特性,并通过巧妙地转换操作顺序来实现队列的行为。虽然每次出队操作可能涉及...

    队列实现栈_栈_数据结构_队列_

    同样,"232栈实现队列.cpp"文件可能是用栈来实现队列的逻辑,这种实现称为双栈队列。这里通常会用到两个栈,一个用于入队,一个用于出队,以保持队列的FIFO特性。 数据结构的选择取决于具体的问题需求。例如,栈常...

    C语言用栈和队列实现的回文检测功能示例

    通过使用栈和队列,可以分别存储字符串的前半部分和后半部分,然后比较两个部分是否相同,以判断字符串是否是一个回文。 下面是使用栈和队列实现回文检测功能的示例代码: 首先,我们需要定义栈和队列的结构体: ...

    通过2个栈 模拟队列。

    标题“通过2个栈模拟队列”指出我们将探讨如何使用两个栈来实现队列的基本操作,如入队(enqueue)和出队(dequeue)。这种方法主要针对那些无法直接使用队列数据结构,但又需要队列功能的场景。 描述中提到的...

    C++基础学习之利用两个栈实现一个队列

    C++基础学习之利用两个栈实现一个队列 本文主要介绍了如何使用两个栈实现一个队列,通过...本文旨在帮助读者更好地理解和掌握C++编程技术,提供了一个使用两个栈实现队列的示例代码,可以作为读者学习和参考的资料。

    栈和队列的基本操作

    栈和队列是计算机科学中两个基本的数据结构,它们的基本操作包括进栈、出栈、进队、出队等。栈是一种后进先出的数据结构,即最后一个入栈的元素将是第一个出栈的元素。队列是一种先进先出的数据结构,即第一个入队的...

    如何使用两个栈实现队列Java

    这种实现方法虽然在pop操作时可能会有额外的时间开销(如果栈2为空,需要转移所有元素),但在某些情况下,如空间限制或特定应用场景下,使用两个栈实现队列可能比直接使用Java提供的Queue接口更具优势,因为它避免...

Global site tag (gtag.js) - Google Analytics