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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

StackToQueue

發布時間:2025/4/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 StackToQueue 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 使用棧實現隊列
      • 1.1 問題分析
      • 1.2 解決方案設計
      • 1.3 實現思路
      • 1.4 代碼實現
      • 1.5 分析

1 使用棧實現隊列

1.1 問題分析

用棧實現隊列等價于用“后進先出”的特性實現“先進先出”的特性。

1.2 解決方案設計

1.3 實現思路

1.4 代碼實現

StackToQueue.h:

#ifndef STACKTOQUEUE_H #define STACKTOQUEUE_H#include "LinkStack.h" #include "Queue.h"namespace LemonLib { template <typename T> class StackToQueue : public Queue<T> { protected:mutable LinkStack<T> m_stack_in;mutable LinkStack<T> m_stack_out;void move() const{if (m_stack_out.size() == 0){while (m_stack_in.size() > 0){m_stack_out.push(m_stack_in.top());m_stack_in.pop();}}}public:void add(const T& e){m_stack_in.push(e);}void remove(){move();if (m_stack_out.size() > 0){m_stack_out.pop();}else{THROW_EXCEPTION(InvalidOperationException, "stack to queue remove error, queue is empty");}}T front() const{move();if (m_stack_out.size() > 0){return m_stack_out.top();}else{THROW_EXCEPTION(InvalidOperationException, "stack to queue front error, queue is empty");}}void clear(){m_stack_in.clear();m_stack_out.clear();}int size() const{return m_stack_in.size() + m_stack_out.size();} }; }#endif // STACKTOQUEUE_H

1.5 分析

使用的棧實現隊列的方式時間復雜度出現了很多個O(n),所以無實際工程意義。

總結

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

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