本文力求简洁,只包含基础的栈功能,不想将大片的代码展现出来,让读者兴趣索然,阅读起来也十分费力,若有须要能够自行添加相关功能好比java.util.Stack
包中的Stack类包含的peek()
,empty()
等等函数.能力有限,有误之处还请不吝赐教
java
class Node { private Node below; //指向下一个栈元素的reference private T type; //泛型元素 public Node(Node below, T type) { this.below = below; this.type = type; } }
public void push(T element) { if (top == null) { Node node = new Node(null, element); this.top = node; this.base = node; length++; } else { Node node = new Node(top, element); this.top = node; length++; } }
public T pop() { if (top != null) { Node temp = top; if (temp.below != null) { top = temp.below; length--; } else { this.base=null; this.top=null; length=0; } return temp.type; } else return null; } public int getLength() { return length; }
总体代码比较简单,这里再也不赘述,有必定java基础的应该都可以看懂node
public class MyStack<T> { private Node base; private Node top; private int length = 0; class Node { private Node below; private T type; public Node(Node below, T type) { this.below = below; this.type = type; } } public void push(T element) { if (top == null) { Node node = new Node(null, element); this.top = node; this.base = node; length++; } else { Node node = new Node(top, element); this.top = node; length++; } } public boolean isEmpty(){ if(base==null){ return true; }else return false; } public T pop() { if (top != null) { Node temp = top; if (temp.below != null) { top = temp.below; length--; } else { this.base=null; this.top=null; length=0; } return temp.type; } else return null; } public int getLength() { return length; } @Override public String toString() { StringBuffer sb = new StringBuffer(); Node current = top; while (current != null) { sb = sb.append("/"+current.type); current = current.below; } return sb.toString(); } public static void main(String[] args) { MyStack<String> ms=new MyStack<>(); System.out.println(ms.getLength()); ms.push("value1"); ms.push("value2"); ms.push("value3"); System.out.println(ms.getLength()); System.out.println(ms.pop()); System.out.println(ms.pop()); System.out.println(ms.getLength()); System.out.println(ms.toString()); } }
个人文章列表app
Email:sxh13208803520@gmail.comide