栈
栈(Stack)是一种基于后进先出(Last In, First Out,LIFO)原则的数据结构。在栈中,最后添加的元素是第一个被移除的,而最先添加的元素是最后被移除的。这就好比在一个堆叠的盘子上添加和移除盘子。
栈的主要操作包括压栈(Push)和弹栈(Pop):
压栈(Push): 将元素添加到栈的顶部。
弹栈(Pop): 从栈的顶部移除元素。
题目描述
实现一个栈,栈初始为空,支持四种操作:
push x
– 向栈顶插入一个数 x;pop
– 从栈顶弹出一个数;empty
– 判断栈是否为空;query
– 查询栈顶元素。
现在要对栈进行 M个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。
代码实现
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int stk[N], tt;
void push(int x)
{
stk[++tt] = x;
}
int query()
{
return stk[tt];
}
void pop()
{
tt--;
}
bool empty()
{
return tt == 0;
}
int main()
{
int n;
cin >> n;
while( n -- )
{
string op;
cin >> op;
if( op == "push" )
{
int x;
cin >> x;
push(x);
}else if( op == "pop" )
{
pop();
}else if( op == "query" )
{
cout << query() << endl;
}else {
if ( empty() )cout << "YES" << endl;
else cout << "NO" << endl;
}
}
return 0;
}
队列
队列(Queue)是一种基于先进先出(First In, First Out,FIFO)原则的数据结构。在队列中,最先添加的元素是第一个被移除的,而最后添加的元素是最后被移除的,类似于在排队等待服务的过程。
队列的主要操作包括入队(Enqueue)和出队(Dequeue):
入队(Enqueue): 将元素添加到队列的尾部。
出队(Dequeue): 从队列的头部移除元素。
队列的特性使得它在某些场景中非常有用,例如任务调度、广度优先搜索(BFS)等。
题目描述
实现一个队列,队列初始为空,支持四种操作:
push x
– 向队尾插入一个数 x;pop
– 从队头弹出一个数;empty
– 判断队列是否为空;query
– 查询队头元素。
现在要对队列进行 M 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。
代码实现
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int q[N], hh;
int tt = -1;
int main()
{
int n ;
cin >> n;
while ( n -- )
{
string op;
cin >> op;
if ( op == "push" )
{
int x;
cin >> x;
q[++tt] = x;
}else if( op == "query" )
{
cout << q[hh] << endl;
}else if( op == "pop" )
{
hh++;
}else {
if ( hh <= tt ) cout << "NO" << endl;
else cout << "YES" << endl;
}
}
return 0;
}
评论区