java数据算法-栈

来源:互联网 发布:黑帽seo 快照劫持 编辑:程序博客网 时间:2024/06/06 12:50
有很长的时间没有写文章了,因为我之前一直有项目在忙,后面又要准备期末考试,期末刚考完,又马不停蹄的去实习。我在校期间真的是很忙,学生会,班委,项目,学习,所以能找出的空余时间也不是很多,有空了就整理一下我的学习笔记,和大家分享一下。我之前报过一些编程比赛,像CCF认证,华为编程大赛,微软的编程之美,hihocoder大赛,有兴趣的朋友可以去看一看,如果后边有空的话,我也可以和大家分享一下我的结题思路。   好了,言归正传,这一次先和大家分享一下栈。栈在数据结构中,是一种后入先出的结构,大家可以想一下一个箱子,这个箱子中的东西我是一个压在一个上面的,这个肯定是先放进去的放在下边,后放进去的放在上边,如果想拿下边的东西,势必要把上边的东西先拿出来。那么我们在实际的编程当中又有什么用呢?很多人在写计算器的过程当中会用到桟,这里我就不赘述了,分享一个ppt给大家看一下吧  [简易计算器(栈)](http://wenku.baidu.com/link?url=WgP-2UcEJy53ShbZC3gQVHZTXrHbgg14COe3HE9ybEfI82sr8nMvc-FobNBS9WwQr1ljoAha9YoR_B2kFjx65CDs1aTE0lV5rTx1UCOyCZW)还有一些用于数制转换,10进制转2进制等等。接下来我给大家介绍一下在JAVA当中怎样写桟
package datastructure;import java.util.LinkedList;/** * * @author qincheng */public class StackADT<T> {    int top=0;    LinkedList<T> stack=new LinkedList<>();    public void push(T e){        top++;        stack.add(e);    }    public T pull(){        if(top>0){            T e=stack.get(top-1);            top--;            stack.remove(top);            return  e;        }        return  null;    }}
在这里面我使用了泛型,因为我们事先不知道栈里面要存什么东西,可以使String字符串,也可以是整数,浮点数。所以我们使用了一个泛型。这个栈实现起来简单吧。下面我来给大家演示一下这个栈的使用
public static void main(String[] args) {        // TODO code application logic here        StackADT<Integer> stack;        stack=new StackADT<Integer>();        stack.push(5);        stack.push(6);        System.out.println(stack.pull());        System.out.println(stack.pull());    }
这里我们建立的是一个整数类型的栈。首先,我们将栈中的添加一个5,然后,我们在添加一个整数6。之后,我再将他们取出来。我们来看一下运行的结果

这里写图片描述

结果时后进入栈的,先被取出来。可能有朋友要问,如果在我的栈空的情况下  在pull会怎么样呢 ?下面我们将代码修改一下,改成添加2个元素,取出3次,那么结果呢?

这里写图片描述
返回的是null,并没有报错而退出,这样会使程序继续进行下去。程序员在编程过程最好先 访问一下数值top,在决定是否在栈中取出元素。

0 0
原创粉丝点击