鍊錶實現的棧
由於棧先進後出的特性,push時要用首插法,pop也從頭部開始
push 先檢查鍊錶是否空,空則作為頭結點
再從head開始pop, 也有乙個空的判斷
public
class
linkedstack
else
}public
intpop()
else
}public
void
printall()
}}
陣列實現棧
基於陣列實現的棧,由於棧先進後出的特性,入棧出棧都運算元組末尾
入棧時,檢查是否會越界(=n)
出棧時,檢查是否會越界 (=-1)
public
class
arraystack
public
boolean
push
(int val)
arr[
++peek]
= val;
return
true;}
public
intpop()
return arr[peek--];
}public
void
printall()
}}
陣列實現的迴圈佇列
(陣列實現普通佇列時)
//佇列先進先出, 用陣列實現時,從陣列尾部enqueue, 從頭dequeue
//dequeue 時,要判斷head == tail, 隊空
//enqueue 時,要判斷tail == arr.length 隊滿
迴圈佇列實現時
陣列實現的迴圈佇列中,物件變數包括乙個arr,模擬佇列;
int n 描述長度;head = 0; tail = 0; 表示佇列首尾
初始化,建構函式傳入乙個引數capacity, 在這裡給陣列分配空間
public
class
circularqueue
public
boolean
enqueue
(int val)
arr[tail++
]= val;
tail = tail % n;
return
true;}
public
intdequeue()
int val = arr[head]
; head =
(++head)
% n;
return val;
}public
void
printall()
return;}
}
鍊錶實現的佇列
a物件變數有兩個,node head = null 和 node tail = null;
enqueue 要判斷隊空,隊空時head == null, 此時要設定首結點,head = tail = newnode;
dequeue 要判斷隊空
public
class
linkedqueue
else
}public
intdequeue()
int val = head.val;
head = head.next;
return val;
}public
void
printall()
}}
佇列實現棧棧實現佇列
佇列是一種先進先出的資料結構,要想實現先進後出,需加乙個輔助佇列進行資料的來回倒 引用交換 從而實現棧結構。例如 5 4 3 2 1 用乙個輔助佇列裝 4 3 2 1,把5彈出,在把 4 3 2 1放回原佇列,如此反覆可變成5 4 3 2 1的棧結構。棧是一種先進後出的資料結構,要想實現先進先出,同...
佇列實現棧,棧實現佇列
兩個佇列實現棧 每次進入乙個佇列,取出得時候,把所有元素進入另乙個佇列,只留下乙個元素,以此實現棧的先進後出 filo package algorithmbymyself import j a.util.linkedlist import j a.util.queue 用兩個佇列實現乙個棧 publ...
Java實現棧 佇列 鍊錶
棧 底層陣列 棧頂指標 public class mystack 自定義構造器,自定義初始化棧大小 public mystack int initsize 插入 public void push int num 刪除 public intpop 檢視 public intpeek 佇列 底層陣列 佇...