數據結構-leetcode(設計循環隊列)

1.學習內容:

今天 我們講解一道能夠很好的總結所學隊列知識的題目---設計循環隊列

?622. 設計循環隊列 - 力扣(LeetCode)

?2.題目描述:

讓我們設計一個隊列? 要求是循環的 這和我們的雙向鏈表有些類似

讓我們按要求設計出這些相對應函數?

此題目特殊之處在于 “滿了就不能再插入”“循環如何判斷滿和空”圈起來后面要用到

?

3. 題目思路:

為了解決以上問題 我們要先設計我們的解題思路

設計循環隊列,那我們是選擇用數組處理還是選擇用鏈表處理呢? 為什么?

?先給答案:? 建議用數組?

為什么:? 首先我們用front指向頭? back指向隊尾的下一個 使用鏈表確實可以在判斷為空為滿部分很快捷 我們只需要判斷back->next 是否等于 front即可 但是唯獨在取隊尾時不方便 這時候我們可以選擇采用雙向鏈表 或者增加一個back->prev的指針來表示上一個 但哪怕是采用雙向鏈表 對于我們來說依舊不是很友好 我們還需要新建節點 釋放等等 在難度上和數組大差不差 所以我們還是選擇數組來解決

?首先,我們要解決一開始提到的問題------“滿了就不能再插入”“循環如何判斷滿和空”

?我們有兩種解決方案

先上示意圖

1.? 采用size? 新增加一個size? size==0時 也就是front==back為空? size != 0 就是滿

?2.采用新開辟一個空間 因為我們使back指向隊尾的下一個 所以每次賦值后++back??

所以當? (back+1)% (k+1) == front 時就是滿的情況 黃色位置就表示插入滿后back的指向

此時就可以完美解決無法判斷滿和空的區別

?

?

?

?接下來我們解決其他函數:插入和刪除

首先進行插入判斷: 為空不能插入 返回false? ?back指向下一個位置++??

核心:? 當我的back小于我開辟的k+1個空間時 怎么%取的都是back的下標

但當他滿了的時候 需要讓他的下標重新返回0? 所以?obj->back %= (obj->k+1);是專門為返回原下標也就是他滿了的時候準備的 同理 front也一樣 不進行二次贅述

第三重點:返回rear

?有兩種表示方法 上面的很好理解 就是back為空或者滿直接返回隊尾元素

重點是下面的

這個表示相當于在原先back滿了要循環的情況下? 不進行循環 直接在后面添加

也就是back為0的情況下? ? ? ?當back為0? back-1就代表數組下標越界?

這個時候為他加上我的空間長度 k+1? 再%k+1? ? 就可以返回任意情況 包括front不在第一位

因為如果back沒滿時? ? ?back-1? %? ?k+1? ?就會直接返回back-1?

而? ?back == 0? ? ? k+1就發揮作用了? ??

以上就是本題的大致講解 下面將附下全代碼僅供參考

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162515.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162515.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162515.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多線程解決大數據批量導出問題(demo)

1.首先從網上找一個到工具類,我這里是ExcelUtils,如下 package com.org.util;import org.apache.poi.xssf.streaming.SXSSFCell; import org.apache.poi.xssf.streaming.SXSSFRow; import org.apache.poi.xssf.streaming.SXSSFSheet;import java.beans.I…

Navicat 技術指引 | GaussDB 數據查看器

Navicat Premium(16.2.8 Windows版或以上) 已支持對GaussDB 主備版的管理和開發功能。它不僅具備輕松、便捷的可視化數據查看和編輯功能,還提供強大的高階功能(如模型、結構同步、協同合作、數據遷移等),這…

讀論文模板

文章簡介 文章標題:文章鏈接作者單位:文章來源:會議視頻ppt1.他人代碼 2.作者代碼 文章思路 文章總結 1.解決問題 2.使用方法 3.文章不足

解釋器模式 (Interpreter Pattern)

定義 解釋器模式(Interpreter Pattern)是一種行為型設計模式,用于定義一種語言的語法表示,并提供一個解釋器來處理這種語法。這種模式用于實現語言解釋器,通常用于專業領域或復雜文本處理中。在解釋器模式中&#xff…

220V轉12V固定輸出12V非隔離芯片WT5106WT5105

220V轉12V固定輸出12V非隔離芯片WT5106WT5105 今天給大家介紹一款實用芯片,WT5106。它是一款高效率高精度的非隔離降壓開關電源恒壓控制驅動芯片。 WT5106適用于85VAC~265VAC全范圍輸入電壓的非隔離Buck、Buckboost拓撲結構,小家電、電機驅動、繼電器驅…

量子計算爭霸戰加碼?美國將撥款30億美元發展量子計算

(圖片來源:網絡) 美國眾議院科學、太空和技術委員會認為,如果不采取措施加速量子計算系統的發展,美國將落后于俄羅斯和中國。 因此,該小組的領導人——主席Frank Lucas(共和黨)和高…

云貝教育 |【PostgreSQL PGCA題目解析5】PostgresSQL是否能夠自動檢測到死鎖,然后退出其中一個事務?

考試科目:PGCA-E-090 考試題量:40 道單項選擇題、10 道多項選擇題(每題 2 分) 通過分數:60% 考試時間:60min 本文為云貝教育劉峰(微信:yunbee_DBA)原創,請…

基于 Modbus 的工業數據采集、控制(part 3)

Modbus 設備(利用 slave 模擬) Modbus 采集程序 client.c #include "client.h"modbus_t *ctx; key_t key_shm, key_msg; int shmid, msgid; struct shm *shm0; struct msgbuf msg0;void *collector(void *arg) {struct shm *p = (struct shm *)arg;while (1){sle…

瀏覽器事件循環原理 —— JS為何會阻礙渲染?

系列文章目錄 第一章 瀏覽器事件循環原理 —— 瀏覽器進程模型第二章 瀏覽器事件循環原理 —— 渲染主線程如何工作?第三章 瀏覽器事件循環原理 —— 何為異步? 文章目錄 系列文章目錄 文章目錄 前言 代碼解析 總結 前言 該文章作用于 “web前端大…

橋接模式 (Bridge Pattern)

定義: 橋接模式(Bridge Pattern)是一種結構型設計模式,用于將抽象部分與其實現部分分離,使它們可以獨立地變化。這種模式通過創建一個橋接接口,將抽象類和其實現類解耦,使得修改或擴展獨立的抽…

改進YOLOv5 | C3模塊改動篇 | 輕量化設計 |骨干引入動態卷積|CondConv

???YOLOv5實戰寶典--星級指南:從入門到精通,您不可錯過的技巧 ??-- 聚焦于YOLO的 最新版本, 對頸部網絡改進、添加局部注意力、增加檢測頭部,實測漲點 ?? 深入淺出YOLOv5:我的專業筆記與技術總結 ??-- YOLOv5輕松上手, 適用技術小白,文章代碼齊全,僅需 …

信號功率放大器的工作原理和特點是什么

信號功率放大器是一種電子設備,用于將輸入信號的功率進行放大,以達到所需的輸出功率水平。它在各個領域中都有廣泛的應用,包括音頻放大器、射頻放大器、激光功率放大器等。下面將詳細介紹信號功率放大器的工作原理和特點。 工作原理&#xff…

Git使用基礎總結(從小白到新手版)

(??? ),Hello我是祐言QAQ我的博客主頁:C/C語言,數據結構,Linux基礎,ARM開發板,網絡編程等領域UP🌍快上🚘,一起學習,讓我們成為一個強大的攻城獅&#xff0…

只知道ECMAScript 2015(ES6),一篇匯總ECMAScript 2015~ECMAScript 2023新特性

前言 我們常說的ES6也就是ECMAScript 2015是在2015年6月發布的。這個版本引入了許多重要的語言特性和改進,對 JavaScript 進行了深刻的擴展和升級,ES6 是 JavaScript 語言的一個里程碑。所以有時也被稱為ES6。這是由于規范的發布年份與實際版本號之間的…

OpenAI“宮斗”新進展!Sam Altman將重返OpenAI擔任首席執行官 董事會成員改動

在經過激烈的五天討論和辯論之后,高調人工智能初創公司OpenAI宣布,其聯合創始人之一Sam Altman將回歸擔任首席執行官。這一決定是對上周Altman突然被解雇的回應,該決定引起了極大的關注和討論。 OpenAI表示,他們已經達成了與Altm…

德迅云安全-德迅衛士:保障您的主機安全

主機安全是指保證主機在數據存儲和處理的保密性、完整性、可用性,包括硬件、固件、系統軟件的自身安全,以及一系列附加的安全技術和安全管理措施。 為什么要主機安全? 服務器一旦被黑客入侵,個人和企業面臨以下安全風險&#xff…

張弛聲音變現課,如何為偶像劇配音?

在為偶像劇進行配音工作時,配音員應當捕捉劇中角色的年輕活力、浪漫的愛情故事以及輕快的生活節奏。偶像劇主要講述的是青春的愛戀、友誼和夢想追求,因此配音需要傳遞出劇中的真誠和活潑。為偶像劇配音可以考慮以下幾點建議: 鮮明活潑的聲音 …

如何判斷交流回饋老化測試負載是否合格?

交流回饋老化測試負載是用于模擬實際工作環境中設備運行狀態的測試工具,主要用于檢測設備的耐久性和穩定性。 負載性能:需要檢查負載的性能是否符合設計要求,這包括負載的功率、電流、電壓等參數是否在規定的范圍內,以及負載的工作…

【AI】行業消息精選和分析(11月23日)

今日動態 1、Sam Altman 重掌 CEO,OpenAI 權力斗爭正式「落幕」 2、重磅好消息:語音 ChatGPT 現已向全用戶開放 3、NVIDIA 與基因泰克合作,利用生成式 AI 加速藥物發現 4、 英偉達Q3營收同比增長206%至181億美元 黃仁勛:生成式AI時…

Zoho Bigin和標準版CRM有什么區別?

Zoho Bigin是Zoho公司推出的一款針對小微企業設計的CRM系統,它與Zoho CRM一脈相承,但更加輕量級,快速幫助小微企業實現數字化銷售。下面來說說,Zoho Bigin是什么?它適合哪些企業? 什么是Zoho Bigin&#x…