棧和佇列標準實現

2021-10-21 18:47:19 字數 2355 閱讀 2823

佇列

public

inte***ce

mystack

extends

iterable

public

class

arraystack

implements

mystack

@override

public item pop()

throws exception

item item = a[

--n]

;check()

;// 避免物件游離

a[n]

= null;

return item;

}private

void

check()

else

if(n >

0&& n <= a.length /4)

}/**

* 調整陣列大小,使得棧具有伸縮性

*/private

void

resize

(int size)

a = tmp;

}@override

public

boolean

isempty()

@override

public

intsize()

@override

public iterator

iterator()

@override

public item next()

};}}

需要使用鍊錶的頭插法來實現,因為頭插法中最後壓入棧的元素在鍊錶的開頭,它的 next 指標指向前乙個壓入棧的元素,在彈出元素時就可以通過 next 指標遍歷到前乙個壓入棧的元素從而讓這個元素成為新的棧頂元素。

public

class

liststack

implements

mystack

@override

public mystack

push

(item item)

@override

public item pop()

throws exception

item item = top.item;

top = top.next;

n--;return item;

}@override

public

boolean

isempty()

@override

public

intsize()

@override

public iterator

iterator()

@override

public item next()

};}}

下面是佇列的鍊錶實現,需要維護 first 和 last 節點指標,分別指向隊首和隊尾。

這裡需要考慮 first 和 last 指標哪個作為鍊錶的開頭。因為出佇列操作需要讓隊首元素的下乙個元素成為隊首,所以需要容易獲取下乙個元素,而鍊錶的頭部節點的 next 指標指向下乙個元素,因此可以讓 first 指標鍊錶的開頭。

public

inte***ce

myqueue

extends

iterable

public

class

listqueue

implements

myqueue

@override

public

boolean

isempty()

@override

public

intsize()

@override

public myqueue

add(item item)

else

n++;return

this;}

@override

public item remove()

throws exception

node node = first;

first = first.next;

n--;if

(isempty()

)return node.item;

}@override

public iterator

iterator()

@override

public item next()

};}}

實現棧和佇列

一 棧的實現 入棧 出棧 取棧頂元素 順序表實現棧操作 實現 public class mystack data size val size 2.出棧 public integer pop integer result data size 1 size return result 3.取棧頂元素 p...

佇列實現棧棧實現佇列

佇列是一種先進先出的資料結構,要想實現先進後出,需加乙個輔助佇列進行資料的來回倒 引用交換 從而實現棧結構。例如 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...