陣列模擬棧挺簡單的,弄乙個指標index,壓棧就arr[index++],彈棧就arr[ -- index]
陣列模擬佇列有點複雜,要弄三個指標,index、first和last,index防止越界(這裡是固定陣列,即使用者需要給出棧和佇列的初始大小),first和last模擬先進先出(這個地方有個小技巧,指標碰到邊界就重新指向0,然後加入佇列的數歸last管,從佇列取數歸first管,就可以實現先進先出了,有點像貪吃蛇的感覺)
具體**如下:
package cn.nupt.sort;
/** * @description: 用固定陣列來模擬棧和佇列
* * @author pizan
* @date 2023年1月25日 下午7:24:35
* */
public
class
arraystackandqueue
arr =
newinteger
[initsize]
; index =0;
// 初始指標指在0處
}// 壓棧
public
void
push
(int obj)
arr[index++
]= obj;
}// 彈棧
public
intpop()
return arr[
--index]
;// 其實原先這個index所指的值是空的
}// 獲得棧頂元素
public
intpeek()
return arr[index -1]
;// 其實原先這個index所指的值是空的}}
public
static
class
arrayqueue
arr =
newint
[initsize]
; index =0;
first =0;
last =0;
}public
void
push
(int obj)
index++
; arr[last]
= obj;
last =
(last == arr.length -1?
0: last +1)
;}public
intpop()
index--
;int temp = first;
first =
(first == arr.length -1?
0: first +1)
;return arr[temp];}
//拿出佇列第乙個元素
public integer peek()
return arr[first];}
}}
用棧模擬佇列和佇列模擬棧
棧 先進後出 filo 佇列 先進先出 fifo class myqueue 兩棧模擬佇列 def init self self.input self.output 進佇列 defpush self,x 出佇列 defpop self self.peek return self.output.pop...
使用陣列模擬佇列 迴圈佇列和棧
在一些考試題中以及筆試面試的過程中,在需要使用stack和queue的時候,可能被要求不能使用stl中相關的庫函式,也就意味著我們需要使用純c進行程式設計。但是如果在考試中或者筆試面試中,為了要使用棧和佇列,而去寫乙個完整的資料結構是比較大費周章,況且在時間上也不一定允許,因此,使用陣列來模擬棧和佇...
演算法基礎課 陣列模擬棧 佇列
二 陣列模擬佇列 用陣列模擬棧,可以幫助我們理解棧的本質。模擬棧的關鍵點就是 棧頂指標 這比鍊錶簡單多了,鍊錶需要知道頭尾 每個節點的前後指標,而棧只有乙個指標!隨著不斷地push和pop,棧頂指標會不斷向後移動,前面的空間就浪費了。這對於演算法題來說是可以忍受的,畢竟更看重時間效率。include...