ACM程序设计(第2版)
上QQ阅读APP看书,第一时间看更新

2.11 stack堆栈容器

stack堆栈是一个后进先出(Last In First Out, LIFO)的线性表,插入和删除元素都只能在表的一端进行。插入元素的一端称为栈顶(Stack Top),而另一端则称为栈底(Stack Bottom)。插入元素叫入栈(Push),元素的删除则称为出栈(Pop)。图2-9是堆栈示意图。

图2-9 堆栈示意图

要使用stack,必须声明头文件包含语句“#include <stack>”。stack文件在C:\Program Files\Microsoft Visual Studio\VC98\Include文件夹中。

堆栈的使用方法

堆栈只提供入栈、出栈、栈顶元素访问和判断是否为空等几种方法。

采用push()方法将元素入栈;采用pop()方法出栈;采用top()方法访问栈顶元素;采用empty()方法判断堆栈是否为空,如果是空的,则返回逻辑真,否则返回逻辑假。当然,可以采用size()方法返回当前堆栈中有几个元素。

下面的程序是对堆栈各种方法的示例:

        #include <stack>
        #include <iostream>
        using namespace std;

       int main(int argc, char * argv[])
        {
          //定义堆栈s,其元素类型是整型
          stack<int> s;
          //元素入栈
          s.push(1);
          s.push(2);
          s.push(3);

            s.push(9);
            //读取栈顶元素
            cout<<s.top()<<endl;
            //返回堆栈元素数量
            cout<<s.size()<<endl;
            //判断堆栈是否为空
            cout<<s.empty()<<endl;
            //所有元素出栈(删除所有元素)
            while(s.empty()! =true)//堆栈非空
            {
                cout<<s.top()<<" "; //读取栈顶元素
                s.pop(); //出栈(即删除栈顶元素)
            }
            //回车换行
            cout<<endl;
            return 0;
          }

运行结果:

        9
        4
        0
        9 3 2 1