網站首頁 編程語言 正文
1.隊列的介紹
隊列的定義
- 隊列(Queue)是一種線性存儲結構。它有以下幾個特點:
- 按照"先進先出(FIFO, First-In-First-Out)"方式進出隊列。
- 隊列只允許在"隊首"進行取出操作(出隊列),在"隊尾"進行插入操作(入隊列?)
隊列實現的方式有兩種
- 基于動態數組實現
- 基于鏈表形式實現
隊列需要實現的函數
-
T dequeue() :?
出隊列,并返回取出的元素 -
void enqueue(const T &t) :?
入隊列 -
T &head() :?
獲取隊首數據,但是不會被取出 -
const T &head() const :
?獲取const類型隊首數據 -
int length() const:?
獲取數量(父類已經實現) -
void clear():
?清空隊列(父類已經實現)
2.代碼實現
本章,我們實現的隊列基于鏈表形式實現,它的父類是我們之前實現的LinkedList類:
C++?雙向循環鏈表類模版實例詳解
所以Queue.h代碼如下:
#ifndef QUEUE_H #define QUEUE_H #include "throw.h" // throw.h里面定義了一個ThrowException拋異常的宏,如下所示: //#include//using namespace std; //#define ThrowException(errMsg) {cout<<__FILE__<<" LINE"<<__LINE__<<": "< class Queue : public LinkedList { public: inline void enqueue(const T &t) { LinkedList ::append(t); } inline T dequeue() { if(LinkedList ::isEmpty()) { // 如果棧為空,則拋異常 ThrowException("Stack is empty ..."); } T t = LinkedList ::get(0); LinkedList ::remove(0); return t; } inline T &head() { if(LinkedList ::isEmpty()) { // 如果棧為空,則拋異常 ThrowException("Stack is empty ..."); } return LinkedList ::get(0); } inline const T &head() const { if(LinkedList ::isEmpty()) { // 如果棧為空,則拋異常 ThrowException("Stack is empty ..."); } return LinkedList ::get(0); } }; #endif // QUEUE_H
3.測試運行
int main(int argc, char *argv[]) { Queuequeue; cout<<"******* current length:"<
運行打印:
總結
原文鏈接:https://blog.csdn.net/qq_37997682/article/details/123127872
相關推薦
- 2023-12-17 Spring自帶定時器實現定時任務,方法一
- 2023-05-09 C語言qsort函數用冒泡排序實現過程詳解_C 語言
- 2022-03-15 /usr/local/jdk1.8.0_144/jre/lib/amd64/libawt_xawt.
- 2022-11-02 一文搞懂Golang中的內存逃逸_Golang
- 2022-05-22 Nginx基礎location語法及功能配置實例_nginx
- 2022-08-23 Python中更優雅的日志記錄方案詳解_python
- 2022-07-06 C語言全面梳理文件操作方法_C 語言
- 2022-04-12 Oracle?Session每日統計功能實現_oracle
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支