栈,类似一个有底的箱子,当向箱子放东西时,先放进去的会被压在底部,而取出时,则后放进去的会被先取出来
//链表是以节点为单位的,对于单向链表,每个节点中包含一个值和指向下一个对象的引用 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()); } } }