1. 程式人生 > >Java的棧實現

Java的棧實現

棧的概念

           棧是一種資料結構,可以理解為儲存資料的一種特殊的線性表。在日常生活中,我們可以在一張表格中隨意的填寫資訊,可以在中間填寫,也可以在開頭填寫。而棧對新增的方式進行了限制。我們只能在表格的一端新增或者是刪除資料。新增資料的一端叫做棧頂,新增資料的操作叫:   入棧,刪除資料的操作叫: 出棧。並且我們不能像陣列一樣可以訪問通過陣列的索引訪問陣列的各個元素,在棧中只能訪問棧棧頂的元素。

 

棧的連結串列實現

這裡沒有使用泛型------------------只是使用了基本資料型別int來作為data

package com.nerer.lixiaochi;

/**
 * 棧的連結串列實現
 * 
 * @author hasee
 *
 */
public class MyStack{
	
	//表示當前的棧頂元素。
	private Node next = null;
	
	//表示棧當前的元素個數。
	int size=0;
	
	//入棧
	public void push(int data) {
		Node now = new Node(data);
		now.front=next;
		next = now;
		size++;
	}
	
	//出棧
	public void pop()  {
		if(next!=null)  {
			next = next.front;
			size--;
		}
	}
	
	//獲取棧頂元素
	public int top()  {
		if(next==null)
			return next.data;
		return -1;
		
	}
	
	//判斷棧是否為空
	public boolean isEmpty()  {
		return next==null;
	}
	
	//內部類,表示連結串列的每一個結點物件。
	class Node {
		int data;
		Node front;
		public Node(int data)  {
			this.data=data;
		}
	}
}


棧的應用

      棧在日常生活中,使用的非常廣泛,比如Java虛擬機器中程式的執行就使用了棧。常用的幾種應用有符號匹配問題,表示式的求值,中綴表示式轉換成字尾表示式。