手册
目录
栈(stack)按照特定的顺序(称为后进先出,即 LIFO)存储多个元素。
LIFO 是 "Last In, First Out"(后进先出)的缩写。要理解 LIFO,可以想象一堆煎饼,煎饼是从顶部添加和移除的。因此,当你移除一块煎饼时,它总是你最后添加的那块。在计算机科学和编程中,这种组织元素的方式被称为 LIFO。
与向量不同,栈中的元素不能通过索引号访问。由于元素是从栈顶添加和移除的,因此你只能访问栈顶的元素。
要使用栈,必须包含 头文件:
// 包含栈库 #include
要创建一个栈,可以使用 stack 关键字,并在尖括号 <> 内指定要存储的值的类型,然后是栈的名称,格式为:
stack<类型> 栈名
// 创建一个名为 cars 的字符串栈 stackcars;
注意:栈的类型(本例中为 string)一旦声明后就不能更改。
注意:与向量不同,你不能在声明栈时直接添加元素:
stackcars = {"Volvo", "BMW", "Ford", "Tesla"};
要向栈中添加元素,可以使用 .push() 函数:
// 创建一个名为 cars 的字符串栈 stackcars; // 向栈中添加元素 cars.push("Volvo"); cars.push("BMW"); cars.push("Ford"); cars.push("Tesla");
此时栈的结构如下(记住,最后添加的元素是栈顶元素):
Tesla (栈顶元素) Ford BMW Volvo
与数组和向量不同,你不能通过索引号来访问栈元素。
在栈中,你只能访问栈顶元素,这可以通过 .top() 函数实现:
// 访问栈顶元素 cout << cars.top(); // 输出 "Tesla"运行实例 »
点击 "运行实例" 按钮查看在线实例
你也可以使用 .top() 函数来修改栈顶元素的值:
// 修改栈顶元素的值 cars.top() = "Audi"; // 访问栈顶元素 cout << cars.top(); // 现在输出 "Audi" 而非 "Tesla"运行实例 »
点击 "运行实例" 按钮查看在线实例
你可以使用 .pop() 函数从栈中移除一个元素。
这将移除栈中最后添加的元素:
// 创建一个名为 cars 的字符串栈 stack运行实例 »cars; // 向栈中添加元素 cars.push("Volvo"); cars.push("BMW"); cars.push("Ford"); cars.push("Tesla"); // 移除最后添加的元素(Tesla) cars.pop(); // 访问栈顶元素(现在是 Ford) cout << cars.top();
点击 "运行实例" 按钮查看在线实例
要了解栈中有多少个元素,可以使用 .size() 函数:
cout << cars.size();运行实例 »
点击 "运行实例" 按钮查看在线实例
可以使用 .empty() 函数来判断栈是否为空。
.empty() 函数在栈为空时返回 1(true),在栈包含元素时返回 0(false):
stack运行实例 »cars; cout << cars.empty(); // 输出 1(栈为空)
点击 "运行实例" 按钮查看在线实例
stack运行实例 »cars; cars.push("Volvo"); cars.push("BMW"); cars.push("Ford"); cars.push("Tesla"); cout << cars.empty(); // 输出 0(栈不为空)
点击 "运行实例" 按钮查看在线实例
栈通常与队列一起提及,队列是另一种类似的数据结构,将在下一页进行介绍。
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
9
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习