Java--堆栈的链表实现
堆栈结构的特性就是从栈口入从栈口出,先进的数据只能等到最后再出来。
可以把链表的头指针作为栈口,
入栈就相当于在头指针后添加数据,
出栈就相当于将头指针后面的数据取出来。
package 链表实现堆栈; public class Node { private Object data; private Node next; public Node() { data = null; next = null; } public Node(Object data) { this.data = data; next = null; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } }
package 链表实现堆栈; public class Link { Node head = null; public Link() { head = new Node();// 初始化头结点 } // 入栈 public void push(Object obj) { Node node = new Node(obj); node.setNext(head.getNext()); head.setNext(node); } // 判断是否为空 public boolean isEmpty() { return (head.getNext() == null); } // 出栈 public Object pop() { Object item = null; if (isEmpty()) { System.out.println("堆栈为空"); return item; } item = head.getNext().getData(); head.setNext(head.getNext().getNext()); return item; } // 堆栈大小 public int size() { int len = 0; Node pNode = head; while (pNode.getNext() != null) { len++; pNode = pNode.getNext(); } return len; } // 读取栈顶元素 public Object peak() { Object item = null; if (isEmpty()) { System.out.println("堆栈为空"); return item; } item = head.getNext().getData(); return item; } public static void main(String[] args) { Link link = new Link(); link.push("第一个"); link.push("第二个"); link.push("第三个"); link.push("第四个"); System.out.println(link.isEmpty());// false System.out.println(link.peak());// 第四个 System.out.println(link.pop());// 第四个 System.out.println(link.size());// 3 } }