C++

stack使用总结

c++ stl栈stack介绍

C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,主要操作包括堆栈初始化、元素入栈、取栈顶元素、元素出栈、判断堆栈是否非空和取得当前堆栈大小等。

c++ stl栈stack的头文件为:

#include

c++ stl栈stack的成员函数介绍(5种)

empty() 堆栈为空则返回真

pop() 移除栈顶元素

push(i) 在栈顶增加元素

size() 返回栈中元素数目

top() 返回栈顶元素

栈的底层容器可以是vector、list等,如:

stack<int,vector > s1;
stack<int, list > s2; // 用双向链表作堆栈的底层结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//----------------------------------------- 读取堆栈的栈顶元素
#include <stack>
#include <iostream>
using namespace std;
int main()
{
// 创建堆栈对象
stack<int> s;
// 元素入栈
s.push(3);
s.push(19);
s.push(23);
s.push(36);
s.push(50);
s.push(4);

// 元素依次出栈
while(!s.empty())
{
// 打印栈顶元素,打印出:4 50 36 23 19 3
cout << s.top() << endl;
// 出栈
s.pop();
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*    堆栈的大小
堆栈的元素个数可用 size 函数获得。每次元素入栈前,先检查当前堆栈的大小,超过某个界限值,则不允许元素入栈,以此可实现一个具有一定容量限制的堆栈。
size_type size()
返回当前堆栈的元素个数

下面的示例程序,将堆栈的大小设置为 100 个 int 元素,而且使用 list 双向链表做堆栈的底层容器,每次压入元素时均判断堆栈的大小是否超过100个元素的界限,从而实现具有容量限制的堆栈。
*/

----------------------------------------- 限制堆栈的大小
#include <stack>
#include <list>
#include <iostream>
#define STACK_SIZE 100 // 堆栈最大容量
using namespace std;
int main()
{
// 用双向链表作堆栈的底层结构
stack<int, list<int> > s;
// 堆栈未满,元素才能入栈
if (s.size() < STACK_SIZE)
s.push(68);
if (s.size() < STACK_SIZE)
s.push(1);
if (s.size() < STACK_SIZE)
s.push(17);
// 元素出栈
while (!s.empty())
{
// 打印 17 1 68
cout << s.top() << endl;
s.pop();
}

return 0;
}