笨鸟的数据结构理解 - 栈

   什么是栈?    

               栈这个数据结构,一咋听 名字觉得很深奥 感觉很难。那是因为以前从没有接触过。一直以为栈是跟关键字一样 事先已经定义好了的。以前太傻太天真了。后来经过摸索,所有的数据结构 其实都是抽象的。表示的就是一种数据存放的结构规则。比如前面说到的 去超市买东西 买了各种各样的,最后放到口袋里面装着,其实那口袋里面的商品集合 就是一个数据结构了。至于是什么结构 我想应该更像《数据结构》中描述 的 “堆”。 哈哈我还没学到堆。我只是口袋里的东西 无序的放着。根据中文的表述 不就是一堆吗? 呵呵。很多时候 不用学的太死了。需要突破下自己仅有的思维局限。      

                  好了,正式描述下栈 这个结构。对于男孩子来说,这个数据结构 很可能自己现实生活中遇到过。最好的例子 就是那个 玩具手枪的弹夹。弹夹里面的子弹  如果自己按一颗进去 ,再按一颗的话,如果开枪,那么肯定是后按进去的子弹 先出来。 这样的结构 称为 栈。 很浅显吧。往往很多书上说的很深奥似地。我们可以看到这个结构最大的特点 就是 数据 先存入 ,后出来。 在现实生活中 我们也会有地方用到这样的 结构 来存放数据。 计算机编程世界中也会有更多的地方需要到。至于是哪里要用到。没有明确的规定,完全取决于你自己写程序的需求。其实数据结构这门课程 可有可无,如果没学到这里面的思想,你同样的也能用很很浅显很很耗费性能的结构来存储你的数据(不过这样 显然不太适合想做一名优秀程序员的同学)。


   如何用栈来整理数据?


             同学们记住,数据的结构 永远是一个逻辑的概念。并不是说 栈 或者 数组 就真能够 存放你需要的数据,这些结构体 只是用来以它特定的方式 在归纳整理 内存中的数据。

为了能实现 先进后出的数据存取效果。这些数据丢一堆是不太好的。
这样我们还得再一堆数据中寻找 哪些到底是先放进来的。
把数据放成一个队列是最好的方式。
来一个数据 就放着,再来一个数据 就放这个数据的后面。
依次类推,那么很容易知道哪些是先放进来的 哪些是后方进来的了。
这样其实也是一个数据结构,用数组 来表达最好不过。
我们再用类把这个数组给包装起来,给它添加许多实现存取功能的 方法。
那么这个组合的结构体就成了另一个功能性更强的结构体。
如果实现了 数据 先存入后取出的方法,那么就叫这个结构体为栈。
如果实现了 先存入 先取出的方法,那么我们叫这个结构体为 队列。 

用数组实现 栈 的细节代码


public class StackX{
	
	private int maxSize;//栈里面数组的大小 也就是栈的大小
	private char[] stackArray;
	private int top;//这个表示指针,指向最后进来的数据
	
	public StackX(int s){
		
		maxSize = s;
		stackArray = new char[maxSize];
		top = -1;
	}
	/**
	 * 把数据存入栈中,记得给 top 先加值 ,再做下标。
	 * @param j
	 */
	public void push(char j){
		
		stackArray[++top] = j;
	}
	
	/**
	 * 弹出最后存入的数据
	 * @return
	 */
	public char pop(){
		
		return stackArray[top--];
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值