队列和栈

S.top()://取出栈顶,返回栈顶元素
S.empty()://判断栈是否为空
S.push(x)://将x添加到栈
S.pop()://弹出栈顶
S.size()://栈的存储元素个数

在这里插入图片描述

#include <stdio.h>
#include <stack>
using namespace std;
int main()
{
	std::stack<int>S;
	if (S.empty()) {
		printf("S is empty!\n");
	}
	S.push(5);
	S.push(6);
	S.push(10);
	printf("S.top=%d\n", S.top());
	S.pop();
	S.pop();
	printf("S.top=%d\n", S.top());
	printf("S.size=%d\n", S.size());
	system("pause");
	return 0;
}

输入如图

Q.empty()://判断队列是否为空
Q.front()://返回队列头部元素
Q.back()://返回队列尾部元素
Q.pop()://弹出队列头部元素
Q.push(x)://将x添加至队列
Q.size()://返回队列的存储元素的个数

在这里插入图片描述

#include <iostream>
#include <queue>

int main()
{
	std::queue<int>Q;
	if (Q.empty()) {
		printf("Q is empty!\n");
	}

	Q.push(5);
	Q.push(6);
	Q.push(10);
	printf("Q.front=%d\n", Q.front());
	Q.pop();
	Q.pop();
	printf("Q.front=%d\n", Q.front());
	Q.push(1);
	printf("Q.back=%d\n", Q.back());
	printf("Q.size=%d\n", Q.size());
	system("pause");
	return 0;
}

在这里插入图片描述

#include <queue>

class MyStack {
public:   //临时队列,利用该队列进行原始data_queue元素与新元素的次序调换
	MyStack() {
	}
	void push(int x) {
		std::queue<int>temp_queue;
		temp_queue.push(x);//对于新元素x的操作(图2)
		while (!_data.empty()) {
			temp_queue.push(_data.front());//只要data数据队列不为空,即循环(图3)
			_data.pop();
		}
		while (!temp_queue.empty()) {//只要临时队列temp_queue不为空即循环(图4)
			_data.push(temp_queue.front());
			temp_queue.pop();
		}
	}
	int pop() {
	int x = _data.front();
	_data.pop();
	return x;
}
int top() {
	return _data.front();
}
bool empty() {
	return _data.empty();
}
private:
	std::queue<int>_data;
};

int main()
{
	MyStack S;
	S.push(1);
	S.push(2);
	S.push(3);
	S.push(4);
	printf("%d\n", S.top());
	S.pop();
	printf("%d\n", S.top());
	S.push(5);
	printf("%d\n", S.top());
	system("pause");
	return 0;
}

输出
4
3
5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值