變數定義:
- q:封裝的佇列
- x:入堆疊元素
演算法代碼(C#):
public class MyStack
{
//封裝的佇列
Queue<int> q = null;
public MyStack()
{
q = new Queue<int>();
}
//元素 x 入堆疊
public void Push(int x)
{
var queue = new Queue<int>();
queue.Enqueue(x);//add in end
foreach (var elemet in q)
{
queue.Enqueue(elemet);
}
q = queue;
}
//移除堆疊頂元素
public int Pop()
{
return q.Dequeue();
}
//獲取堆疊頂元素
public int Top()
{
return q.First();
}
//回傳堆疊是否為空
public bool Empty()
{
return !q.Any();
}
}
演算法實作:
保證每次入堆疊元素都位于佇列開始處,出堆疊時直接去取佇列開始處的元素即可,入堆疊具體程序如下:
1.創建一個新佇列,放入入堆疊元素
2.將存盤佇列的元素依次取出放入新佇列
3.將來新佇列賦值給存盤佇列
參考資料:
Leetcode原題鏈接
c# Leetcode 225. 用佇列實作堆疊(堆疊-佇列*設計)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/178795.html
標籤:.NET技术
上一篇:簡單實用演算法——用佇列實作堆疊
