经典数据结构:栈的详解| 8月更文挑战

203 阅读2分钟

这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战

想要坚持写点什么,那干脆写一个系列吧。想想有什么可以写的呢?程序=算法+数据结构,可见算法和数据结构的重要性。这个系列老诗力求用最简单的语言把算法和数据结构讲得明明白白,由浅到深,有兴趣的话,可以关注一下专栏。

之前的篇章都是给大家讲的算法,今天给大家讲一种数据结构。

数据结构就是属于按照特殊的数据存储方式进行存储和读写。它们都有着自己的规律。今天要给大家讲的是栈。

关于栈的描述

栈(Stack)这个东西是一种线性存储结构,它的特点是“后进先出”。

栈限定只能在栈顶进行插入和删除操作。

(1)栈顶与栈底:可以让元素插入与删除的一端称为栈顶,另一端称为栈底。

(2)压栈:栈的插入操作,叫做进栈,也称压栈、入栈。

(3)弹栈:栈的删除操作,也叫做出栈。

关于栈的操作

s.empty(); //判断栈是否为空,如果是空返回ture,如果非空返回false s.size(); //返回栈中元素的个数 s.top(); //返回栈顶元素,注意这里不是删除 s.pop(); //弹出栈顶元素,注意这里是直接删除了,没有返回数值 s.push(); //将元素压入栈顶

image.png 我就画一个简图吧,栈像是塞羽毛球的桶一样,只能从顶部拿出或者塞入。他是单向的。

栈的实例代码

#include <stack>
#include <iostream>
using namespace std;
 
int main()
{
	stack<int> mystack;
	int sum = 0;
	for (int i = 0; i <= 10; i++){
		mystack.push(i);
	}
	cout << "size is " << mystack.size() << endl;
	while (!mystack.empty()){
		cout << " " << mystack.top();
		mystack.pop();
	}
	cout << endl;
	system("pause");
	return 0;
}
//size is 11
// 10 9 8 7 6 5 4 3 2 1 0

上面的是c++实例,在c++中别人早就已经封装好栈,我们导入头文件#include<stack>直接用就可以了。

上面的操作是将11个数从0开始压进栈,然后再从栈顶一个一个取出。

更多的干货内容,项目源码,可以关注公众号:诗一样的代码

既然进来了,原创不易。小伙伴点个赞再走呗