想要坚持写点什么,那干脆写一个系列吧。想想有什么可以写的呢?程序=算法+数据结构,可见算法和数据结构的重要性。这个系列老诗力求用最简单的语言把算法和数据结构讲得明明白白,由浅到深,有兴趣的话,可以关注一下专栏。
之前的篇章都是给大家讲的算法,今天给大家讲一种数据结构。
数据结构就是属于按照特殊的数据存储方式进行存储和读写。它们都有着自己的规律。今天要给大家讲的是栈。
关于栈的描述
栈(Stack)这个东西是一种线性存储结构,它的特点是“后进先出”。
栈限定只能在栈顶进行插入和删除操作。
(1)栈顶与栈底:可以让元素插入与删除的一端称为栈顶,另一端称为栈底。
(2)压栈:栈的插入操作,叫做进栈,也称压栈、入栈。
(3)弹栈:栈的删除操作,也叫做出栈。
关于栈的操作
s.empty(); //判断栈是否为空,如果是空返回ture,如果非空返回false
s.size(); //返回栈中元素的个数
s.top(); //返回栈顶元素,注意这里不是删除
s.pop(); //弹出栈顶元素,注意这里是直接删除了,没有返回数值
s.push(); //将元素压入栈顶
我就画一个简图吧,栈像是塞羽毛球的桶一样,只能从顶部拿出或者塞入。他是单向的。
栈的实例代码
#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开始压进栈,然后再从栈顶一个一个取出。
更多的干货内容,项目源码,可以关注公众号:诗一样的代码
既然进来了,原创不易。小伙伴点个赞再走呗。