java实现栈,队列数据结构


//java实现栈

public class StackForInt<T> {
    // 储存数据的栈
    private Node<T> StackForInt[];

    // 栈的最大容量
    private int maxSize;

    // 栈的当前容量
    private int size;
    
    //分别保存node中最大值和最小值,在栈push和pop时都要来保存这个值,特别是在pop时,当出栈的数是最大或者最小时,就需要更新
    //maxNode,minNode.代码中还没有实现,后续增加。
    
    private T maxNode;
    private T minNode;
    public T getMax(){
        return maxNode;
    }
    
    public T getMin(){
        return minNode;
    }

    // 不传参数,默认栈的最大容量为100
    public StackForInt() {
        this(100);
    }

    public StackForInt(int maxSize) {
        // 如果传入的参数小于或等于0,则设置最大容量为100
        if (maxSize <= 0)
            maxSize = 100;
        this.maxSize = maxSize;
    }

    // 初始化栈,在堆中先申请好内存空间
    public void initStackForInt() {
        Node<T>[] StackForIntNodes = new Node[maxSize];
        StackForInt = StackForIntNodes;
        for (int i = 0; i < maxSize; i++) {
            StackForInt[i] = new Node<T>();
        }
        // 栈的当前大小为0
        size = 0;
    }

    // 栈的基本方法之一,获得栈顶元素
    public Node<T> getTop() {
        // 栈中没有元素,则返回空
        if (size == 0)
            return null;
        return StackForInt[size-1];
    }

    // 栈的基本方法之一,入栈
    public boolean push(Node<T> StackForIntNode) {
        // 栈已满,入栈失败
        if (size >= maxSize)
            return false;
        size++;
        StackForInt[size - 1] = StackForIntNode;
        
        return true;
    }

    // 栈的基本方法之一,出栈
    public Node<T> pop() {
        // 如果栈已空,则返回null
        if (size <= 0)
            return null;
        size--;
        return StackForInt[size];
    }

    // 栈是否为空
    public boolean isEmpty() {
        if (size <= 0)
            return true;
        return false;
    }

    // 栈的基本方法之一,遍历栈
    public void traverse() {
        for (int i = 0; i < size; i++) {
            System.out.println(StackForInt[i].get());
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        StackForInt<String> StackForInt = new StackForInt<String>();
        StackForInt.initStackForInt();
        StackForInt.push(new Node<String>("Anybody1"));
        StackForInt.push(new Node<String>("Anybody2"));
        StackForInt.push(new Node<String>("Anybody3"));
        StackForInt.traverse();
    }
    
    static class Node <T>{
        //要存储的信息
        private T nodeinfo;
        
        public Node(){
            this(null);
        }
        
        public Node(T info){
            this.nodeinfo = info;
        }
        //set方法
        public void set(T info){
            this.nodeinfo = info;
        }
        //get方法
        public T get(){
            return nodeinfo;
        }
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值