棧 佇列 Java實現

2021-09-12 23:10:22 字數 1816 閱讀 3910

鍊錶實現的棧

由於棧先進後出的特性,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 佇列 底層陣列 佇...