关于 两个栈实现队列的方法
2016-05-12 15:10
375 查看
栈和队列的数据结构
入队
先判断s1是否为空,如不为空,说明所有元素都在s1,此时将入队元素直接压入s1;如为空,要将s2的元素逐个“倒回”s1(出队时),再压入入队元素 。
出队
先判断s1是否为空,若为空,直接取出s2的栈顶元素;若不为空,将s1中Count()-1个元素压入s2中,然后将最后一个元素出栈。
class Stack{ public: void Push(int x);//入栈 int Pop();//出栈 int Count() const;//统计元素个数 }; class Queue{ public: void Enqueue(int x);//入队 int Dequeue();// 出队 private: Stack s1;//栈s1 Stack s2;//栈s2 }
入队
先判断s1是否为空,如不为空,说明所有元素都在s1,此时将入队元素直接压入s1;如为空,要将s2的元素逐个“倒回”s1(出队时),再压入入队元素 。
public void Enqueue(int x){ if(Count(s1)==0){ while(Count(s2)>0) s1.Push(s2.Pop()); } s1.Push(x); }
出队
先判断s1是否为空,若为空,直接取出s2的栈顶元素;若不为空,将s1中Count()-1个元素压入s2中,然后将最后一个元素出栈。
public int Dequeue(){ if(Count(s1)==0) return s2.Pop(); while(Count(s1)>1){ s2.Push(s1.Pop()); } return s1.Pop(); }
相关文章推荐
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- C#线程队列用法实例分析
- 算法系列15天速成 第九天 队列
- C++基于栈实现铁轨问题
- 数据结构之Treap详解
- C语言单链队列的表示与实现实例详解
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- mysql 队列 实现并发读
- C#队列Queue用法实例分析
- C#多线程处理多个队列数据的方法
- C语言循环队列的表示与实现实例详解
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- C++循环队列实现模型