013实现使用两个堆栈队列(keep it up)

013实现使用两个堆栈队列(keep it up)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

实现使用两个堆栈队列

FIFO队列是一种数据结构(FIFO),后堆叠前进出的数据结构的(FILO)。 

两个栈实现的最简单的方法就是排队:队列中的第一个推栈, 

队列将数据顺序的第一个堆栈推入第二堆叠,然后叠加.

两个规则:

1)进队列,则直接压入第一个栈

2)出队列,若果第二个栈不为空。直接pop(),如过第二个栈为空,

则把第一个栈中的数据所有压入第二个栈(第一个栈此时为空)。

实际写代码时注意栈为空的情况。

代码:

#include <iostream>
#include <stack>

class Queue
{
public:
	Queue() {}
	~Queue() {}

	void push(int vData)
	{
		m_First.push(vData);
	}

	void pop()
	{
		if (m_Second.empty())
		{
			if (m_First.empty())
			{
				std::cout << "the queue is empty" << std::endl;
				return ;
			}
			move(m_First, m_Second);
			m_Second.pop();
		}
	}

	int top()
	{
		if (m_Second.empty())
		{
			if (m_First.empty())
			{
				std::cout << "the queue is empty" << std::endl;
				return ;
			}
			move(m_First, m_Second);
		}
		return m_Second.top();
	}

	int back()
	{
		if (m_First.empty())
		{
			if (m_Second.empty())
			{
				std::cout << "the queue is empty" << std::endl;
				return ;
			}
			move(m_Second, m_First);
		}
		return m_First.top();
	}

private:
	void move(std::stack<int>& vL, std::stack<int>& vR)
	{
		while (!vL.empty())
		{
			vR.push(vL.top());
			vL.pop();
		}
	}

private:
	std::stack<int> m_First;
	std::stack<int> m_Second;
};

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117287.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SSL协议简介

    SSL协议简介最近在看《密码学与网络安全》相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL。在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识。1、密码学的相关概念密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性。明文(plaintext):发送人、接受人和任何访问消息的人都能理解的消息。密文(ciphertext):明…

  • 字节数组转化为字符串_数组字符串

    字节数组转化为字符串_数组字符串//创建JSONArray,把JSONObject放到JSONArrayJSONArrayja=newJSONArray();//获取JSONArrayJSONArrayitems=response.getJSONArray(“items”);if(!items.isEmpty()){//获取JSO…

    2022年10月30日
  • 石器时代服务器架设教程_石器时代gm命令

    石器时代服务器架设教程_石器时代gm命令本文只作学习研究之用,任何人不得非法使用。Linux系统架设石器私服概述首要条件,安装Linux版系统,建议CentOS4或者5工具:SSHvncforLinuxandwinxamppforLinux主机在眼前的就不说了,首先说的是如果你租了服务器,机房给你装好系统你自己还需要一些工具再进Linux一般Linux系统用户名默认为root服务商会给你一个初始密码ssh安装在自己w…

  • 解决WIFI无线连接或连接上很慢

    解决WIFI无线连接或连接上很慢

  • ant 下载地址[通俗易懂]

    ant 下载地址[通俗易懂]https://archive.apache.org/dist/ant/binaries/

  • Java 定时器Timer「建议收藏」

    Java 定时器Timer「建议收藏」简介Timer是Java提供的原生Scheduler(任务调度)工具类,用来在一个后台线程计划执行指定任务。利用Timer可以安排任务“执行一次”或者定期“执行多次”。Timer类提供了以下方法:schedule(TimerTasktask,Datetime)安排在“指定的时间”执行指定的任务(只执行一次)schedule(TimerTasktask,DatefirstTime,longperiod)安排指定的任务在”指定的时间”开始进行“重复”的固定延迟执

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号