佇列與棧的相互實現

2022-06-04 00:51:17 字數 1425 閱讀 7066

problem:

如何僅用佇列結構實現棧結構?

solution:

佇列是先進先出,而棧是先進後出  

故使用兩個佇列來實現乙個棧的功能  

乙個存放原來的資料,

另乙個做資料倒騰的容器

code:

1

class

queuetostack211

inttop()

1219

int res =data.front();

20temp.push(data.front());

21data.pop();

2223 auto tem =data;

24 data =temp;

25 temp = data;//

交換回來,始終保持資料在data中

2627

return res;//

返回top值28}

2930

void

pop()

3138 data.pop();//

刪除top值

3940 auto tem =data;

41 data =temp;

42 temp = data;//

交換回來,始終保持資料在data中43}

4445 };

problem2:

如何僅用棧結構實現佇列結構?

解題思路:

同樣的,使用兩個棧data,temp來實現列表功能

data用來存放資料,temp用來倒騰資料

code:

1

class

stacktoqueue211

intfront()

1218

int res =temp.top();

19while (!temp.empty())

2024

return

res;25}

2627

void

pop()

2834

temp.pop();

35while (!temp.empty())

3640

}41 };

測試**:

1

void

test()

2

棧與佇列之間的相互實現

棧與佇列之間的相互實現,是面試中的經典試題。入隊 元素進棧a 出隊 先判斷棧b是否為空,為空則將棧a中的元素 pop 出來並 push 進棧b,再棧b出棧,如不為空則棧b直接出棧 複雜度分析 這樣用兩個棧實現乙個佇列,入隊的複雜度為o 1 出隊的複雜度則變為o n 而直接用 python 的單個列表...

棧與佇列的相互轉換實現

一 使用兩個棧實現乙個佇列 棧s1,s2 入隊操作 入棧操作,count 1 出隊操作 s1出棧,入棧s2,出棧s2 具體實現 include includeusing namespace std 利用兩個棧實現乙個佇列 templateclass myque void push t elem q....

棧和佇列相互實現

題目一 佇列實現棧 要求 使用佇列實現棧的下列操作 push x pop top empty 方法 利用雙佇列deque實現棧,操作方便,效率較高 思路 1 push 操作,為了保證先進棧的元素一直在棧底,需要將兩個佇列交替使用,才可滿足需求,所以我們在空的佇列新增元素,然後將非空佇列的元素全部追加...