首先我們要知道"棧"為何物 , 他是一種儲存資料的方法 , 有點類似子彈夾 , 擁有先進後出的特點 . 同時進棧與出棧都只能在一端進行.
public
inte***ce
mystack
public
class
node
public object getdate()
public
void
setdate
(object date)
public node getnext()
public
void
setnext
(node next)
}
private node top;
private
int size;
這是乙個新增的方法也叫入棧
public
boolean
pash
(object x)
1,建立乙個node物件newnode用來儲存要插入的元素
2,將top所指向的資料拼接在newnode的後面 , 這樣一來我們就成功的吧新元素newnode給連線進來棧了
3,因為我們新增了新元素進來所以棧頂元素變成了newnode , 但是top每一次都是指向棧頂元素所以我們需要將top的元素更換 , 這時我們的top=newnode就可以滿足 , 將top的元素變為了newnode
4,有效個數size++;
話不多說直接上圖
這是乙個出棧方法
public object pop()
1,因為棧的特性只允許從棧頂出來 , 而且是先進後出 . 所以我們只能從棧頂出棧 , 又因為top指向棧頂元素所以我們就直接通過top.getdate方法獲得棧頂元素的值
2,因為top指向的元素要出棧 , 所以我們需要調整top的指標指向 , 直接將top的下以為賦值給top讓他達到top重指向的效果
3,有效元素個數size–;
public
boolean
isempty()
這個方法沒啥好說的直接讓size和0作比較
public object gettop()
這個方法也沒啥好說的跟pop方法一樣但是不用刪除元素所以直接返回值就好了鍊錶實現棧的操作其實並不難我們如果掌握了鍊錶的只是就能很容易的寫出來 , 如果單向鍊錶不是很熟練的可以看一下這個部落格還很詳細
好說的跟pop方法一樣但是不用刪除元素所以直接返回值就好了**
鍊錶實現棧的操作其實並不難我們如果掌握了鍊錶的只是就能很容易的寫出來 , 如果單向鍊錶不是很熟練的可以看一下這個部落格還很詳細
實現單向鍊錶
鍊錶類 public class link 增加節點 public void add node node else 輸出節點 public void print else 內部搜尋節點的方法 public boolean search string data 直到不存在下乙個節點結束搜尋 if th...
實現單向鍊錶
鍊錶類 public class link 增加節點 public void add node node else 輸出節點 public void print else 內部搜尋節點的方法 public boolean search string data 直到不存在下乙個節點結束搜尋 if th...
線性棧和單向鍊錶的實現
陣列實現 public class stack 自定義線性棧 class mystack 初始化棧建構函式 public mystack int begin 進棧 public void instack int e 元素e進棧,有效長度加1 array size e size 出棧 public i...