佇列
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...