【數據結構】——棧、隊列的相關習題

目錄

    • 題型一(棧與隊列的基本概念)
    • 題型二(棧與隊列的綜合)
    • 題型三(循環隊列的判空與判滿)
    • 題型四(循環鏈表表示隊列)
    • 題型五(循環隊列的存儲)
    • 題型六(循環隊列的入隊和出隊)

題型一(棧與隊列的基本概念)

1、棧和隊列都是()。
A、順序存儲的線性結構
B、鏈式存儲的非線性結構
C、限制存取點的線性結構
D、限制存取點的非線性結構

解析:(C)
是一種只允許在一端進行插入或刪除操作的線性表,它是一種特殊的線性表,它與隊列具有相同的邏輯結構,都屬于線性結構,區別在于對其中元素的處理不同,棧遵循的原則是先進后出(FILO),即后進的元素先被取出來,它是被限制存取點的線性結構。

隊列與棧一樣,也是一種特殊的線性表,其操作受限,它與棧具有相同的邏輯結構,都屬于線性結構,區別在于其中元素的處理不同,隊列只允許在一端進行插入,且只允許在另一端進行刪除,隊列遵循的原則是先進先出(FIFO),即先入隊列的元素最先離開,它也是被限制存取點的線性結構,與日常生活中的排隊是一樣的。

2、棧和隊列的共同點是()。
A、都是先進先出
B、都是先進后出
C、只允許在端點處插入和刪除元素
D、沒有共同點

解析:(C)
棧和隊列的共同點是都只允許在一端進行插入或刪除操作的特殊線性表。

題型二(棧與隊列的綜合)

1、設棧S和隊列Q的初始狀態為空,元素a,b,c,d,e,f依次通過棧S,一個元素出棧后即進隊列Q,若6個元素出隊的序列是a,c,f,e,d,b,則棧S的容量至少應該是()。
A、3
B、4
C、5
D、6

解析:(B)
棧是先進后出,隊列是先進先出。
若容量為3,若要滿足條件,首先元素a通過棧S后,然后進入隊列Q,
得到出隊為{a};b、c通過棧S后,c首先出棧通過隊列,得到出隊為
{a、c};此時若要第三個出隊元素為f,則棧中由下至上應該為{b、d、e、f},所以棧S的容量至少應該是4。

題型三(循環隊列的判空與判滿)

1、假設循環隊列的最大容量為m,隊頭指針是front,隊尾指針是rear,則隊列為滿的條件是()。
A、(rear+1)%m == front
B、rear == front
C、rear+1 == front
D、(rear-1)%m == front

解析:(A)
設MaxSize為循環隊列的最大容量,(Q.rear+1)%MaxSize == Q.front即隊尾指針進1與MaxSize取余的值等于頭指針時,此時隊列已滿,如下:
在這里插入圖片描述
當前隊頭指針Q.front=1,Q.rear=0,即(Q.rear+1)%MaxSize=(0+1)%7=1%7=1,等于Q.front=1,所以此時隊列為滿隊,此時隊頭指針在隊尾指針的下一個位置。

題型四(循環鏈表表示隊列)

1、用循環單鏈表來表示隊列,設隊列的長度為n,若只設尾指針,則出隊和入隊的時間復雜度分別為()。
A、O(1),O(1)
B、O(1),O(n)
C、O(n),O(1)
D、O(n),O(n)

解析:(A)
循環單鏈表表示隊列相當于一個環,由于只設尾指針,出隊時直接出隊,出隊的時間復雜度為O(1);因為隊頭隊尾相連,尾指針的下一個結點即是隊頭,則入隊的時間復雜度也為O(1)。

2、用循環單鏈表來表示隊列,設隊列的長度為n,若只設頭指針,則出隊和入隊的時間復雜度分別為()。
A、O(1),O(1)
B、O(n),O(n)
C、O(1),O(n)
D、O(n),O(1)

解析:(D)
循環單鏈表表示隊列相當于一個環,由于只設頭指針,出隊時指針需要從隊頭到隊尾,經過n個結點到達隊尾,所以出隊的時間復雜度為O(n);入隊時由于有頭指針,可直接入隊,出隊的時間復雜度為O(1)。

題型五(循環隊列的存儲)

1、已知存儲循環隊列的數組長度為21,若當前隊列的頭指針和尾指針的值分別為9和3,則該隊列的當前長度為()。
A、6
B、12
C、15
D、18

解析:(C)
通過隊尾指針減隊頭指針加上MaxSize的值與MaxSize取余,可得到數據元素個數,即(Q.rear-Q.front+MaxSize)%MaxSize,代碼如下:

//循環隊列的數據元素個數
bool NumQueue(SqQueue Q){if(Q.front==Q.rear)	//若隊列為空,則報錯 return false;int num=(Q.rear-Q.front+MaxSize)%MaxSize;printf("當前循環隊列的數據元素個數為:%d\n",num);
}

題中,Q.front=9,Q.rear=3,MaxSize=21,所以(Q.rear-Q.front+MaxSize)%MaxSize=(3-9+21)%21=15%21=15。

題型六(循環隊列的入隊和出隊)

1、循環隊列存儲在數組A[0,…,m]中,用front和rear分別表示隊頭和隊尾,則入隊時的操作為()。
A、rear=rear+1
B、rear=(rear+1) mod (m-1)
C、rear=(rear+1) mod m
D、rear=(rear+1) mod (m+1)

解析:(D)
入隊操作針對Q.rear,入隊的代碼通過取余運算實現,隊尾指針加1,即Q.rear=(Q.rear+1)%MaxSize,不管前面(Q.rear+1)為多少,它與MaxSize(例如,MaxSize=5)取余的結果只可能是0、1、2、3、4,也就是隊尾指針Q.rear的每次移動加1。
在這里插入圖片描述
所以題中,入隊時的操作為rear=(rear+1) mod (m+1)。

1、
A、
B、
C、
D、

解析:()

1、
A、
B、
C、
D、

解析:()

1、
A、
B、
C、
D、

解析:()

1、
A、
B、
C、
D、

解析:()

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

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

相關文章

一文揭秘餓了么跨端技術的演進、實踐與落地

跨端技術背景與演進歷程 跨端,究竟跨的是哪些端? 自 90 年的萬維網出現,而后的三十多年,我們依次經歷了 PC 時代、移動時代,以及現在的萬物互聯(的 IoT )時代,繁榮的背后&#xff…

【Apollo】Apollo-ros版本架構學習與源碼分析

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 這篇文章主要介紹Apollo-ros版本架構學習與源碼分析。 無專精則不能成,無涉獵則不能通。——梁啟超 歡迎來到我的博客,一起學習,共同進步。 喜歡的朋友可以關注一下&a…

微信小程序如何自定義分享卡片文案和圖片

微信小程序提供了onShareAppMessage方法,專門用來監聽用戶點擊頁面內轉發按鈕(button 組件 open-type"share")或右上角菜單“轉發”按鈕的行為,并自定義轉發內容。 > 注意:只有定義了此事件處理函數&…

Android studio 設置安卓手機

參考這個鏈接 ghttps://developer.android.com/studio/debug/dev-options 列出常用手機的設置,但是我的手機不在此列 Google Pixel Settings > About phone > Build number Samsung Galaxy S8 and later Settings > About phone > Software informa…

git: ‘lfs‘ is not a git command. see ‘git --help‘

在克隆hugging face里面的項目文件的時候,需要用到git lfs,本文介紹安裝git lfs方法 在Ubuntu下 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt-get install git-lfs在Windows下 到這個鏈…

解決GitHub的速度很慢的幾種方式

1. GitHub 鏡像訪問 這里提供兩個最常用的鏡像地址: https://hub.njuu.cf/search https://www.gitclone.com/gogs/search/clonesearch 也就是說上面的鏡像就是一個克隆版的 GitHub,你可以訪問上面的鏡像網站,網站的內容跟 GitHub 是完整同步…

期權定價模型系列【4】—期權組合的Delta-Gamma-Vega中性

期權組合的Delta-Gamma-Vega中性 期權組合構建時往往會進行delta中性對沖,在進行中性對沖后,期權組合的delta敞口為0,此時期權組合仍然存在gamma與vega敞口。因此研究期權組合的delta-gamma-vega敞口中性是有必要的。 本文旨在對delta-gamma-…

關于新手學習STM32開發應該如何入門?

對于新手來說,學習STM32開發可能會感到困惑,尤其是在拿到開發板后該如何入門。在這里有嵌入式學習路線,畢設,各種項目,需要留個6。以下是部分內容概述:硬件介紹:了解STM32開發板的基本硬件組成和…

Springboot 默認路徑說明

Spring Boot基本上是Spring框架的擴展,它消除了設置Spring應用程序所需的樣板配置,極大的方便了開發者,其默認識別路徑如下: Spring Boot 作為Spring默認將 /** 所有訪問映射到以下目錄: 1、classpath:/static 用于加…

【密碼學】穴居人密碼

穴居人密碼 文字記載中,有時會把來自古希臘文化之前的各種記錄作為密碼學的例子,但稱它們為密碼學一定太不嚴格了,這是因為那些方法都太原始了。密碼學的起源能追溯到多早,取決于你把密碼學的相關定義確定得有多寬泛。大多數作者都…

每日后端面試5題 第四天

1. 線程池的核心參數(高薪常問) (1)corePoolSize:核心線程個數 (2)maximumPoolSize:最大線程個數 (3)keepAliveTime:最大存活時間 &#xff0…

如何在Vue中進行單元測試?什么是Vue的模塊化開發?

1、如何在Vue中進行單元測試? 在Vue中進行單元測試可以提高代碼的可維護性和可讀性,同時也能夠幫助開發者更快地找到代碼中的問題和潛在的錯誤。下面是一些在Vue中進行單元測試的步驟: 安裝單元測試工具 首先需要安裝一個單元測試工具&…

第8章 【C語言】善于利用指針

8.1 指針是什么 由于通過地址能找到所需的變量單元,可以說,地址指向該變量單元。將地址形象化稱為“指針”。 直接按變量名進行的訪問,稱為“直接訪問”方式。 還可以采用另一種稱為“間接訪問”的方式,即將變量i的地址存放在另…

如何讓你的圖片服務也有類似OSS的圖片處理功能

原文鏈接 前言 有自己機房的公司一般都有一套存儲系統用于存儲公司的圖片、視頻、音頻、文件等數據,常見的存儲系統有以NAS、FASTDFS為代表的傳統文件存儲,和以Minio為代表的對象存儲系統,隨著云服務的興起很多公司逐漸將數據遷移到以阿里云…

二叉樹的性質和完全二叉樹的性質

二叉樹的性質: 在二叉樹的第i層至多有 2 i 1 ( i > 1 ) 2^{i1}(i>1) 2i1(i>1) 深度為k的二叉樹最多有 2 k ? 1 2^k-1 2k?1個結點 對于任意一棵二叉樹T,如果其終端結點數為 n 0 n_0 n0?,度為2的結點數為 n 2 n_2 n2?,則 n 0 …

【劍指 Offer 39】數組中超過一半的數字

題目: 數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。 你可以假設數組是非空的,并且給定的數組總是存在多數元素。 示例: 輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 輸出: 2 思考: 方法一:投…

5.0 Python 定義并使用函數

函數是python程序中的基本模塊化單位,它是一段可重用的代碼,可以被多次調用執行。函數接受一些輸入參數,并且在執行時可能會產生一些輸出結果。函數定義了一個功能的封裝,使得代碼能夠模塊化和組織結構化,更容易理解和…

企業有VR全景拍攝的需求嗎?能帶來哪些好處?

在傳統圖文和平面視頻逐漸疲軟的當下,企業商家如何做才能讓遠在千里之外的客戶更深入、更直接的詳細了解企業品牌和實力呢?千篇一律的紙質材料已經過時了,即使制作的再精美,大家也會審美疲勞;但是你讓客戶遠隔千里&…

(MySQL經驗)之MySQL單表行數最好低于2000w

作為在后端開發,是不是經常聽到過,mysql 單表最好不要超過 2000w,單表超過 2000w 就要考慮數據遷移了,表數據都要到 2000w ,查詢速度變得賊慢。 1、建表操作 建一張表 CREATE TABLE person( id int NOT NULL AUTO_INCREMENT PRI…

如何讓ES低成本、高性能?滴滴落地ZSTD壓縮算法的實踐分享

前文分別介紹了滴滴自研的ES強一致性多活是如何實現的、以及如何提升ES的性能潛力。由于滴滴ES日志場景每天寫入量在5PB-10PB量級,寫入壓力和業務成本壓力大,為了提升ES的寫入性能,我們讓ES支持ZSTD壓縮算法,本篇文章詳細展開滴滴…