首页 > 其他分享 >Day9 用栈实现队列,用队列实现栈,有效的括号,删除字符串中相邻项

Day9 用栈实现队列,用队列实现栈,有效的括号,删除字符串中相邻项

时间:2024-07-10 19:28:53浏览次数:17  
标签:Day9 队列 top pop int 用栈 num push include

 

用栈来实现队列

#include<iostream>
using namespace std;
#include<stack>
stack<int>input, output;
void push(int x)
{
	input.push(x);
}
int pop()
{
	while (!input.empty())
	{
		int p = input.top();
		output.push(p);
		input.pop();
	}
	int rsuult = output.top();
	output.pop();
	return rsuult;
}
int peak()
{
	int res = pop();
	output.push(res);
	return res;
}
int main()
{
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		int num;
		cin >> num;
		push(num);
	}
	cout << pop() << endl;
	cout << peak() << endl;
	
}

用队列实现栈

#include<iostream>
using namespace std;
#include<queue>
class mystack
{
public:
	queue<int>u;
	mystack(){}
	void push(int x)
	{
		u.push(x);
	}
	int pop()
	{
		int si_ze = u.size();
		si_ze--;
		while (si_ze--)
		{
			int x = u.front();
			u.pop();
			u.push(x);

		}
		int top = u.front();
		u.pop();
		return top;
	}
	int top()
	{
		return u.back();
	}
	bool empty()
	{
		return u.empty();
	}
};

int main()
{
	mystack v;
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		int num;
		cin >> num;
		v.push(num);
	}
	cout<<v.top();
	cout<<v.pop();
   cout<<	v.empty();
}

有效的括号 

#include<iostream>
using namespace std;
#include<stack>
#include<string >
int main()
{
	stack<int>u;
	string s;
	cin >> s;
	if (s.size() % 2 != 0)
	{
		cout << "不符合" << endl;
		return 0;
	}
	for (int i = 0; i < s. size(); i++)
	{
		if (s[i] == '(')
		{
			u.push(')');

		}
		else if (s[i] == '{')
		{
			u.push('}');
		}
		else if (s[i] == '[')
		{
			u.push(']');
		}
		else if (u.empty() || u.top() != s[i])
		{
			cout << "不符合" << endl;
			return 0;

		}
		else
			u.pop();

	}
	cout << "符合" << endl;
	return 0;

}

 

删除字符串中相邻的项 

#include<iostream>
#include<stack>
#include<string >
#include<algorithm>
using namespace std;
int main()
{
	string s;
	cin >> s;
	stack<int>u;
	for (int i = 0; i < s.size(); i++)
	{
		if (u.empty()||s[i] != u.top() )
		{
			u.push(s[i]);
		}
		else {
			u.pop();
		}
	}
	string s2 = "";
	//!!!
	while (!u.empty())
	{
		s2 += u.top();
		u.pop();
	}
	reverse(s2.begin(), s2.end());
	cout << s2;
}

标签:Day9,队列,top,pop,int,用栈,num,push,include
From: https://blog.csdn.net/lxy2966201752/article/details/140108220

相关文章

  • 消息队列的创建,删除,发送,读取(含概念)
     消息队列 1.特点 2.相关函数    ps: 消息队列实现单个进程的发送和读取#include<stdio.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>#include<stdlib.h>#include<string.h>structmsgbuf{longmtype;//消息类型......
  • centos8(linux): 安装使用supervisor管理laravel队列
    一,什么是supervisorSupervisor是一个进程控制系统,它使用户能够监视和控制类unix操作系统进程。它通过提供基于配置或事件启动、停止和重新启动进程的机制,帮助管理应该在系统中连续运行的进程。对于需要控制和监视Linux或其他类unix操作系统上多个进程的状态的开发人员和系统管理......
  • 强化学习(Value Function Approximation)-Today9
    ValueFunctionApproximation主要是使用神经网络来求最优解问题,主要包括Algorithmforstatevaluefunction、Sarsa和valuefunctionapproximation的结合、Q-learning和valuefunctionapproximation的结合、DeepQ-learning。由于tables的数据不能处理很大的statespace或......
  • STL学习——栈,队列,set,优先队列
    栈:stack容器内元素的访问​由于栈(stack)本身就是一种后进先出的数据结构。在STL中stack中只能通过top()来访问栈顶元素栈上的基本操作栈的基本操作包括:函数名用途push(x)将x入栈top()获得栈顶元素pop()用以弹出栈顶元素empty()可以检测stack内是否为空,返回true为空,返回fa......
  • 【数据结构】栈和队列
    文章目录1.栈1.1栈的概念及结构1.2栈的实现2.队列2.1队列的概念及结构2.2队列的实现3.栈和队列面试题4.概念选择题1.栈1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈......
  • P8592 『JROI-8』颅脑损伤 2.0(加强版)(线性 dp + 单调队列优化)
    P8592『JROI-8』颅脑损伤2.0(加强版)线性dp+单调队列优化最优化问题,考虑dp。先离散化,按左端点排序,设\(f_i\)表示考虑完前\(i\)条线段符合条件的染色,最小长度和。转移枚举上一条红色线段\(j\),\(f_i=f_j+len_i\)。当然\(j\)需要满足题目的条件,即\((j,i)\)中的黑色线......
  • RabbitMq shovel 将一个实例的消息转发到另一个实例的队列
    RabbitMqshovel将一个实例的消息转发到另一个实例的队列一、shovel是什么?其实,shovel和上一篇博客中的federation的功能是类似的,都是为了MQ间的消息同步。不同的是,federation需要每个MQ上都配置,它只是个拉取消息的功能,而shovel只需要在一个MQ上配置即可,它是个双向的动作,既能拉......
  • FreeRTOS之队列上锁和解锁(详解)
     这篇文章将记录我学习实时操作系统FreeRTOS的队列上锁和解锁的知识,在此分享给大家,希望我的分享能给你带来不一样的收获!目录一、简介 二、队列上锁函数prvLockQueue()1、函数初探2、应用示例  三、队列解锁函数prvUnLockQueue() 1、函数初探及详细注释详细注释解......
  • JDK中有直接可以使用的阻塞队列
    是的,Java标准库(JDK)中提供了多个阻塞队列,可以直接使用。这些阻塞队列位于java.util.concurrent包中。阻塞队列是一种支持在某些操作无法立即完成时等待的队列,例如在队列为空时执行的take操作,或者在队列已满时执行的put操作。以下是JDK中几种常见的阻塞队列及其特点:1.ArrayBlocki......
  • 【LeetCode 0232】【设计】用FILO栈实现FIFO队列
    ImplementQueueusingStacksImplementafirstinfirstout(FIFO)queueusingonlytwostacks.Theimplementedqueueshouldsupportallthefunctionsofanormalqueue(push,peek,pop,andempty).ImplementtheMyQueueclass:*voidpush(intx)Pushes......