标签:
数据结构——栈
前言:
大家好,以后会上传数据结构的一系列解题记录和学习记录,谢谢大家的关注。
(限于本人的经验,如此博文有谬误之处,请及时评论,谢谢大家)
正文:
今天我学了栈(其实早就会),正好心血来潮要写写数据结构的学习记录,所以就写了这个博文,不明白为什么上篇博文为什么有那么多人阅读,希望继续关注。
好了,直接开门见山吧,今天要讲的是以下几条:
1.栈是什么?
2.栈的操作函数
3.栈的应用详细说明
4.题目中栈的应用
下面进入第一条:栈是什么?
对,栈是什么?
那么,你见过死胡同吗?现在城市的车越来越多,比方说,你晚上开车九点钟回家,如果没有车位的话,你第一个想法是把车放哪?反正我会想把车堵在外面,挡在明天不走的车前面。
示意图就是这样:
很显然,假设车头在右边,c1是最先进的,但是,c1要等到c5、c4、c3、c2先全部出来以后,才能出来,所以,栈这个线性结构具有一个非常实用的特性——先进后出,这让stack成为做题的非常实用的工具。
你可以把这个stack想象成一个“死胡同”,只要你前面的元素不出来,或不被“pop”掉的话,你就不会被读取,就像你在一个箱子里拿小包袱一样。
栈的定义如下:
首先 系统或者数据结构栈中数据push和pop 是两回事!
插入是增加数据 弹出 是删除数据 ,这些操作只能从栈顶即最低地址作为约束的接口界面入手操作 ,但读取栈中 的数据 是随便的 没有接口约束之说。很多人都误解这个理念从而对栈产生困惑。而系统栈在计算机体系结构中 又起到一个跨部件交互的媒介区域的作用 即 cpu 与内存的交流通道 ,cpu只从系统给我们自己编写的应用程序所规定的栈入口线性地读取执行指令, 用一个形象的词来形容它就是pipeline。
cpu内部交互具体参见 EU与BIU的概念介绍。(转自360)
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。
需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);
栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。
插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
2.栈的操作函数
栈的操作函数?系统提供吗?还是要自己写一个stack(栈)的模板类?
学数据结构,就要知道STL,STL是一个功能特别强大的东西,但你肯定不能偷偷摸摸去调用它的public函数,当然首先要#include<数据结构名>,本章中,是#include<stack>,其中包括了stack需要使用的绝大部分的函数。
定义:
定义方法如下:
stack<int/char/bool....> s(stack名称,当然了,不一定是s);
还可以这样定义:
char/int/bool..... s[10000];//模拟一个栈
今天写到这里,明天继续更改,尽请关注~~~~~~
标签:
原文地址:http://www.cnblogs.com/wxjor/p/5528476.html