用節點實現一個棧結構(stack)
阿新 • • 發佈:2018-12-23
前一篇文章用了陣列對棧進行了簡單地實現,本文擬使用linkedList進行實現。在java的connection中,有一個linkedlist子類,俗稱為連結串列,linkedlist,節點Node在java中是這樣定義的:
Private static class Node<E> { E item; Node<E> next; Node<E> perv; Node(Node<E> prev, E element, Node<E> next) { this.item=element; this.next=next; this.prev=prev; } }
我們藉助Node的構思對棧結構進行實現,棧結構的特點是先進後出,之前用陣列對其的5個方法empty()、peek()、pop()、push()、search()。進行了簡單的實現,我們使用Node思維進行實現,詳細結果如下:
class linkedStack{ private int size; //個數 private Node first; //定義頭結點 public void push(String str) { //產生一個新的節點 Node node=new Node(str, null); //判斷棧是否為空 if (size==0) { this.first=node; }else { node.next=this.first; //將頭結點作為新結點的下一個 this.first=node;//將新結點作為頭結點 } size++; } public String peek() { return this.first.item;//因為在入棧的時候是倒序放的,故順序彈棧即可 } public String pop() { String str=peek();//獲取棧頂位置 this.first=this.first.next;//頭結點的下一位作為頭結點 size--; return str; } public boolean empty(String str) { return size==0; } public int search(String str) { Node node=this.first;//初始化,將頭結點作為初始位置 for (int i = 0; i < size; i++) { if (str==node.item||str!=null&str.equals(node.item)) { return i+1; } } return -1; } }