日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用双栈实现队列

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用双栈实现队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、思路

一個棧的入棧操作當做入隊操作,另外一個棧的出棧操作當做出隊操作。
因為入棧的順序與出棧的順序剛好相反,所以我們需要將當做入隊的那個棧中所有的元素全部出棧到另外一個棧,并且在向另一個棧入棧的時候需要先判斷其是不是空棧,否則會引起順序混亂。

二、偽代碼實現

Push(S,x); //元素x入棧
Pop(S,x); //S出棧并將出棧的值賦給x
StackEmpty(S); //判斷棧是否為空
StackOverflow(S); //判斷棧是否為滿
Enqueue; //將元素x入隊
Dequeue; //出隊,并將出隊元素存儲在x中
QueueEmpty; //判斷隊列是否為空

入隊算法

int EnQueue(Stack &S1, Stack &S2, ElemType e) {if (!StackOverflow(S1)){Push(S1, e);return 1;}if (StackOverflow(S1) && !StackEmpty(S2)){printf("full");return 0;}if (StackOverflow(S1) && StackEmpty(S2)){while (!StackEmpty(S1)){Pop(S1, x);Push(S2, x);}}Push(S1, e);return 1; }

出隊算法

void DeQueue(Stack &S1, Stack &S2, ElemType &x) {if (!StackEmpty(S2)){Pop(S2,x);}else if(StackEmpty(S1)){printf("empty");}else{while(!StackEmpty(S1)){Pop(S1,x);Push(S2,x);}Pop(S2,x);} }

判空算法

int QueueEmpty(Stack &S1, Stack &S2) {if(StackEmpty(S1)&&StackEmpty(S2)){return 1;}else{return 0;} }

總結

以上是生活随笔為你收集整理的用双栈实现队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。