zoukankan      html  css  js  c++  java
  • 自定义栈

    栈,类似一个有底的箱子,当向箱子放东西时,先放进去的会被压在底部,而取出时,则后放进去的会被先取出来

    //链表是以节点为单位的,对于单向链表,每个节点中包含一个值和指向下一个对象的引用
    public class Node {
         Object value;
            Node next;
    
            public Node(Object value) {
                this.value = value;
            }
    
            public Object getValue() {
                return value;
            }
    
            public void setValue(Object value) {
                this.value = value;
            }
    
            public Node getNext() {
                return next;
            }
    
            public void setNext(Node next) {
                this.next = next;
            }
        
    }
    
    
    //自定义链表实现栈结构
    public class MyStack {
    
        Node head = null;
        int size = 0;
    
        public int getSize() {
            return size;
        }
    
        //入栈
        public void push(Object value) {
            Node newNode = new Node(value);
            //如果头元素不存在
            if (head == null) {
                head = newNode;
            } else {
                //关联成串
                newNode.setNext(head);
                //改变指向
                head = newNode;
            }
            size++;
    
        }
    
        //出栈
        public Object pop() {
            Object value = head.getValue();
            head = head.getNext();
            size--;
            return value;
        }
    
        //查看栈顶元素
        public Object peek() {
            return head.getValue();
        }    
    }
    
    //测试
    public class StackTest {
    
        public static void main(String[] args) {
            MyStack mystack=new MyStack();
            mystack.push(1);
            mystack.push(2);
            mystack.push(3);
            mystack.push(4);
            //pop会改变元素的size,导致执行两次就结束了
    //        for (int i = 0; i < mystack.getSize(); i++) {
    //            System.out.println(mystack.pop());
    //        }
    //        
    
            //结果最后放进去的4,别首先取了出来,结果为4 3 2 1

    while (mystack.getSize()>0) { System.out.println(mystack.pop()); } } }
  • 相关阅读:
    json_encode([0])
    try catch throw
    如何 lookback
    协程||进程
    客户错了?
    循环 php 变量会影响到传入的参数
    csv变成xls, csv乱码
    虚拟机不能git push
    数组下标大小写
    php 静态方法
  • 原文地址:https://www.cnblogs.com/huxiaocong/p/10893313.html
Copyright © 2011-2022 走看看