原文链接: (37条消息) C++数据结构——栈_GeekZW的博客-CSDN博客_c++栈
本文属于该文章的笔记
栈的定义
- 栈中的元素遵循 "先进后出" 原则
- 只能在栈顶进行插入和删除操作
栈的相关概念
- 栈顶与栈底: 允许元素插入与删除的一端称为栈顶, 另一端称为栈底.
- 压栈: 将元素从栈顶插入栈.
- 弹栈: 将栈顶的元素删除.
栈的常见分类
- 基于数组的栈
- 基于单链表的栈
栈的基本操作
首先应该包含头文件
#include <stack>
栈的创建
stack<int> s; // 创建一个名为 s 的栈
查看栈内元素
s.size(); // 返回栈顶元素, 但不删除该元素
s.empty(); // 若栈为空则返回 true, 否则返回 false
s.top(); // 返回栈顶元素, 但不删除该元素
入栈, 出栈( push, pop )
s.push(5); //将元素5压入栈顶
s.pop(); // 弹出栈顶元素, 但不返回其值
基于数组的实例
#include <stack>
#include <iostream>
using namespace std;
int main() {
/*创建名为 mystack 的 int 型的栈*/
stack<int> mystack;
/* 向栈内 push 元素 */
for (int i = 0; i < 10; i++)
{
mystack.push(i);
}
/*输出栈的大小以及栈顶元素*/
cout << "size is" << mystack.size() << endl;
cout << "top is" << mystack.top() << endl;
/*将栈内元素依次 pop 出栈*/
while (!mystack.empty())
{
cout << mystack.top() << " has been removed from mystack" << endl;
mystack.pop();
}
cout << "size is " << mystack.size() << endl;
return 0;
}
基于链表的实例
先去学链表了