本文主要是陣列和鍊錶實現棧、鍊錶實現佇列。棧和佇列的結構都比較簡單,用鍊錶實現時都是單鏈表實現的!
先進後出。先進來的元素儲存在棧的最底部,新來的元素則在棧頂堆積,直到棧滿為止;而取元素的時候,只能從棧頂取,直到棧空為止。棧有兩種方法:壓棧(push)和彈棧(pop)。
陣列和鍊錶都可以實現。陣列最好只實現固定棧(棧的容量數量固定),鍊錶可以實現動態棧
(因為進出棧時,永遠只需要對鍊錶的頭操作)。
//獲取棧的長度
public int getsize()
//獲取棧頂
public int gettop()
//判斷是否為空棧,(空:true)
public boolean isempty()
//判斷是否為滿棧
public boolean isfull()
//壓棧操作
public void push(int data) catch (exception e)
}else
}//彈棧操作
public int pop() throws exception else
}//獲取棧頂元素,但不彈棧
public int gettopvalue()
//main方法測試
/** * 用鍊錶實現棧
*/public class mylinkedstack
/*** 通過建構函式,構造出乙個自定義大小的棧
*/public mylinkedstack(int size)
//設定頭結點
public void setheader(node header)
//判斷棧是否已滿
public boolean isfull()
return false;
}//判斷棧是否為空的
public boolean isempty()
return false;
}//壓棧
public void push(object value)
//這裡將原來的header作為引數傳入,然後以新new出來的node作為header
header = new node(value,header);
elementcount ++;
}//彈棧
public object pop()
object obj = header.getelement();
header = header.next;
elementcount --;
return obj;
}//返回棧頂元素
public object getheaderelement()
return header.getelement();
}//main方法測試
先進先出
佇列每一次都是要先刪除前面的元素,陣列越是刪除前面的元素效率越是低,所以這裡就不再研究陣列實現佇列了。相反的是使用鍊錶實現會更簡單,效率會更高!另外佇列的結構比較簡單,只需要用單鏈表就夠了,進佇列時,需要記錄隊尾。
下面用鍊錶實現佇列:rear記錄尾,front記錄頭
package com.review07.linkedqueue;
/** * 單鏈表實現的佇列
*/public class mylinkedqueue
/*** 將乙個物件追加到佇列的尾部
*/public void enqueue(object obj) else
}/**
* 隊首物件出隊
* @return 出隊的物件,佇列空時返回null
*/public object dequeue()
else if(front == rear && rear != null)
object obj = front.element;
front = front.next;
return obj;
}//main測試
public static void main(string args) }}
棧 佇列 Java實現
鍊錶實現的棧 由於棧先進後出的特性,push時要用首插法,pop也從頭部開始 push 先檢查鍊錶是否空,空則作為頭結點 再從head開始pop,也有乙個空的判斷 public class linkedstack else public intpop else public void printal...
表 棧和佇列 Java的實現
1.1 list介面繼承collection介面public inte ce list extends collection list adt有兩種流行的實現方式 linkedlist 類提供了list adt 的雙鏈表實現 例子 將表中所有具有偶數值的項刪除 public static void ...
實現棧和佇列
一 棧的實現 入棧 出棧 取棧頂元素 順序表實現棧操作 實現 public class mystack data size val size 2.出棧 public integer pop integer result data size 1 size return result 3.取棧頂元素 p...