java数据算法-栈

有很长的时间没有写文章了,因为我之前一直有项目在忙,后面又要准备期末考试,期末刚考完,又马不停蹄的去实习。我在校期间真的是很忙,学生会,班委,项目,学习,所以能找出的空余时间也不是很多,有空了就整理一下我的学习笔记,和大家分享一下。
我之前报过一些编程比赛,像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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值