C++栈和队列

C++栈

C++ STL中提供了栈(stack)的模板。

    #include <stack>
    ...
    stack<type> stk;

这就定义了一个栈stk。
栈支持下面的基本操作:

    stk.empty():stk为空则返回true,stk中存在元素则返回false
    stk.size():返回stk中的元素个数
    stk.pop():删除栈顶元素,但是不返回其值
    stk.top():返回栈顶元素的值,但不删除它
    stk.push():在栈顶压入一个新元素

看下面这个示例小程序

#include <cstdio>
#include <stack>
#include <string>
#include <iostream>
using namespace std;
stack<char>ss;
int main()
{
    string s;
    getline(cin,s);
    for (unsigned int i=0;i<s.size();i++)
        ss.push(s[i]);
    while (!ss.empty())
    {
        cout << ss.top() << endl;
        ss.pop();
    }
    return 0;
}

程序会把输入的一行字符串从下向上倒序输出,每个字符占一行。

C++队列

队列(queue)在C++中的定义代码如下

    #include <queue>
    ...
    queue<type> q;

其实队列和栈的操作特别像,只不过由于栈是“先进后出”,队列是“先进先出”,所以有相应的不同。队列支持如下操作

    q.empty():如果q为空,返回true;队列中存在元素,返回false
    q.size():返回q中元素个数
    q.pop():删除q首元素,但是不返回其值
    q.front():返回q队首元素的值,但不删除它
    q.push():在q队尾压入新元素
    q.back():返回队尾元素的值,但不删除它

如果在上面栈的示例程序中,将stack变成queue,其他的都不变,输出就会变成从上向下的正序的字符串。

posted @ 2018-02-23 23:31  CF过2100就买ARCTERYX  阅读(126)  评论(0编辑  收藏  举报