1. 程式人生 > >用節點實現一個棧結構(stack)

用節點實現一個棧結構(stack)

    前一篇文章用了陣列對棧進行了簡單地實現,本文擬使用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;
	}
  }