栈:
栈(stack),是一种操作受限制的线性的数据结构 其限制是只允许在栈的一端进行插入和删除运算 栈的修改按照后进先出的原则,栈被称做后进先出(last in first out)表,简称 LIFO 表 可以想象往子弹夹中装子弹的情形 正常情况下只能往子弹夹入口那段端入子弹,好比向栈中压入元素,称为 push 射击时,弹夹会从顶端弹出子弹,好比从栈顶弹出元素称为 pop
用数组实现栈:
int a[100005],pos;
void push(int val)
{
a[++pos]=val;
}
int pop()
{
if(pos<=0)
{
return -1;
}
return s[pos--];
}
C++ 中使用STL构造一个stack的语句为:stack <T> s 更多用法可以翻阅文档: http://cplusplus.com/reference/stack/stack/?kw=stack(这是英文的)
栈的基本操作:
1.push(x)将x压入栈中(x成为栈顶元素)
2.pop()弹出栈顶元素(如果栈为空,则越界)
3.top()获取栈顶元素的值(如果栈为空,则越界)
4.empty()如果为1说明栈为空,否则说明栈非空
5.size()获取栈的长度(元素个数)
队列:
队列(queue),是一种操作受限制的线性的数据结构 其限制是只允许在队列的尾部进行插入,在前端进行删除 队列的修改具有为先进先出(first in first out)的性质表,简称 FIFO表
用数组实现队列:
int q[100005],h,t;
void push(int x)
{
q[++t]=x;
}
void pop()
{
if(t<h)
{
return;
}
++h;
}
int front()
{
if(t<h)
{
return 0x3f3f3f3f;
}
return q[h];
}
C++ 中使用STL构造一个queue的语句为: queue <T> q 更多用法可以翻阅文档: http://cplusplus.com/reference/ queue / queue /?kw= queue
这篇超级短的博客就到这里啦,下一篇我们会继续讲双端队列和优先队列