請設計程序用於描述堆疊和佇列訪問功能的例子

2022-10-26 07:05:25 字數 6059 閱讀 6221

1樓:匿名使用者

給個思路吧.先計算字元序列長度.然後用一個for迴圈將前面一半先入棧.然後再用一個for迴圈退棧做比較就可以了,大致的**如下:

//s為棧

for (;i} return answer;//返回0不是迴文,返回1是迴文} 給你的這個函式體可以做些優化的,但這樣寫主要是給你個思路.怕優化了你會產生新的疑問.

優化的事情有:2個函式體併為一個,for的條件用s[i]!='\0',而不是用i

求救:棧和佇列在程式設計中的作用

棧和佇列在實際中的例子 20

2樓:教育小百科是我

棧:鐵路排程中用到棧。

佇列:民航機票訂購。

棧作為一種資料結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則儲存資料,先進入的資料被壓入棧底。

最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後一個資料被第一個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指標。

3樓:

佇列 排隊買票 在隊尾入 隊首出

棧 桶裡放的大米 先進去的後出來

遞迴通常是棧的應用 棧的原理 遞迴再解決許多問題都會用到 比如n皇后 求階乘。。。等

佇列通常在 計算機通訊的開發中用到 比如訊息的傳送

4樓:匿名使用者

...佇列 很簡單 所有人排的隊都是佇列 先來先上 先進先出 一個個按順序來(插隊的bs)

棧 就像一疊書 你要拿下面的書先要把上面的書拿開……不過這個比喻不確切 不知道你知道漢諾塔不 如果要拿出最底下的盤子 就一定要先拿走上面的盤子 而最底下的盤子肯定是最早放進去的 後進先出

堆疊和佇列 的本質區別

5樓:

佇列和棧是兩種不同的資料結構。它們有以下本質區別:

1、操作的名稱不同。

佇列的插入稱為入隊,佇列的刪除稱為出隊。棧的插入稱為進棧,棧的刪除稱為出棧。

2、操作的限定不同。

佇列是在隊尾入隊,隊頭出隊,即兩邊都可操作。而棧的進棧和出棧都是在棧頂進行的,無法對棧底直接進行操作。

3、操作的規則不同。

佇列是先進先出(fifo),即佇列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾(不能從中間插入),每次離開的成員總是佇列頭上(不允許中途離隊)。

而棧為後進先出(lifo),即每次刪除(出棧)的總是當前棧中最新的元素,即最後插入(進棧)的元素,而最先插入的被放在棧的底部,要到最後才能刪除。

4、遍歷資料速度不同。

佇列是基於地址指標進行遍歷,而且可以從頭部或者尾部進行遍歷,但不能同時遍歷,無需開闢空間,因為在遍歷的過程中不影響資料結構,所以遍歷速度要快。

棧是隻能從頂部取資料,也就是說最先進入棧底的,需要遍歷整個棧才能取出來,而且在遍歷資料的同時需要為資料開闢臨時空間,保持資料在遍歷前的一致性。

擴充套件資料:

1、堆疊的儲存方式:

堆疊是一個特定的儲存區或暫存器,它的一端是固定的,另一端是浮動的 [1]  。對這個儲存區存入的資料,是一種特殊的資料結構。

所有的資料存入或取出,只能在浮動的一端(稱棧頂)進行,嚴格按照「先進後出」的原則存取,位於其中間的元素,必須在其棧上部(後進棧者)諸元素逐個移出後才能取出。

在記憶體儲器(隨機儲存器)中開闢一個區域作為堆疊,叫軟體堆疊;用暫存器構成的堆疊,叫硬體堆疊。

微控制器應用中,堆疊是個特殊儲存區,堆疊屬於ram空間的一部分,堆疊用於函式呼叫、中斷切換時儲存和恢復現場資料。

堆疊中的物體具有一個特性:第一個放入堆疊中的物體總是被最後拿出來, 這個特性通常稱為先進後出 (filo—first-in/last-out)。

堆疊中定義了一些操作, 兩個最重要的是push和pop。 push(入棧)操作:堆疊指標(sp)加1,然後在堆疊的頂部加入一 個元素。

pop(出棧)操作相反,出棧則先將sp所指示的內部ram單元中內容送入直接地址定址的單元中(目的位置),然後再將堆疊指標(sp)減1。這兩種操作實現了資料項的插入和刪除。

2、佇列的儲存方式:

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。

進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。

佇列的資料元素又稱為佇列元素。在佇列中插入一個佇列元素稱為入隊,從佇列中刪除一個佇列元素稱為出隊。

因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出(fifo—first in first out)線性表。

6樓:

棧和佇列是同一級別的,是屬於資料結構的範疇的,一個是後進先出或者先進後出,一個是先進先出;

堆是實現層面的東西,堆可以用來實現棧結構,也可以高效實現有序棧。

7樓:

1.棧和佇列都是線性資料結構。

2. 棧:只能在一端操作,即棧頂(如出棧、入棧),這種只能從一端操作的性質,意味著棧中的元素只能後進先出(last in first out)。

(它的這種一端性,有時會用來實現double-end stack 雙端棧)

3. 佇列: 是一個雙端操作的資料結構,入隊、和出隊分別在一端操作。

能夠保持先進先出的性質(first in first out). 為了充分利用的佇列的空間,常用來實現迴圈佇列。

8樓:匿名使用者

棧是 先進後出

佇列是 先進先出

棧和佇列資料結構的特點,什麼情況下用到棧,什麼情況下用到佇列(各舉3個例子)

9樓:李圈兒兒

棧和佇列資料結構的特點是:

棧特點就是一個先進後出的結構內。

佇列特點就是一個先進先出的結構。

棧和佇列的區別是:

資料結構不同佇列先進先出,棧先進後出。

對插入和刪除操作的"限定"。 棧是限定只能在表的一端進行插入和刪除操作的線性表。      佇列是限定只能在表的一端進行插入和在另一端進行刪除操作的線性表。

遍歷資料速度不同。棧容只能從頭部取資料 也就最先放入的需要遍歷整個棧最後才能取出來,而且在遍歷資料的時候還得為資料開闢臨時空間,保持資料在遍歷前的一致性佇列怎不同,他基於地址指標進行遍歷,而且可以從頭或尾部開始遍歷,但不能同時遍歷,無需開闢臨時空間。

10樓:不懂多來問問

棧:特點就是一個先進後出的結構。

佇列:特點就是一個先進先出的結構。

//一般只要

專你滿足這個特點就可屬

以稱之為棧或佇列。

棧的應用:非常廣泛,在cpu內部就有提供棧這個機制。主要用途:

函式呼叫和返回,數字轉字元,表示式求值,走迷宮等等。在cpu內部棧主要是用來進行子程式呼叫和返回,中斷時資料儲存和返回。在程式語言中:

主要用來進行函式的呼叫和返回。可以說在計算機中,只要資料的儲存滿足先進後出的原理,都優先考慮使用棧,所以棧是計算機中不可缺的機制。

佇列的應用:佇列主要用在和時間有關的地方,特別是作業系統中,佇列是實現多工的重要機制。windows中的訊息機制就是通過佇列來實現的。

程序排程也是使用佇列來實現,所以佇列也是一個重要的機制。只要滿足資料的先進先出原理就可以使用佇列。

11樓:

棧的bai特點:操作受限,只能在表du

的一端進行zhi插入、刪除,是先進後出的dao線性表專。算符優先演算法求表達屬式的值、表示式的括號匹配問題、迷宮求解、進位制轉換等問題都具有先進後出的特點,需使用棧結構。

佇列的特點:操作受限,只能在表的一端插入,另一端刪除,是先進先出的線性表。舞伴問題、作業系統的程序|作業管理中的先進先出服務、字元序列是否迴文等由於具有先進先出的特點,需要使用佇列結構。

佇列和堆疊的區別聯絡

12樓:匿名使用者

什麼是堆疊

在計算機領域,堆疊是一個不容忽視的概念,但是很多人甚至是計算機專業的人也沒有明確堆疊其實是兩種資料結構。

要點:堆:順序隨意

棧:先進後出

堆和棧的區別

佇列:先進先出,後進後出.

堆疊:先進後出,後進先出.

一、預備知識—程式的記憶體分配

一個由c/c++編譯的程式佔用的記憶體分為以下幾個部分

1、棧區(stack)— 由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。

2、堆區(heap) — 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由os** 。注意它與資料結構中的堆是兩回事,分配方式倒是類似於連結串列。

3、全域性區(靜態區)(static)—,全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。 - 程式結束後由系統釋放。

4、文字常量區 —常量字串就是放在這裡的。 程式結束後由系統釋放 。

5、程式**區—存放函式體的二進位制**。

二、例子程式

這是一個前輩寫的,非常詳細

//main.cpp

int a = 0; 全域性初始化區

char *p1; 全域性未初始化區

main()

分配得來得10和20位元組的區域就在堆區。

strcpy(p1, "123456"); 123456\0放在常量區,編譯器可能會將它與p3所指向的"123456"優化成一個地方。

程式中的棧和佇列是什麼意思

13樓:巧妙的劍士

棧(stack)是僅限制在表的一端進行插入和刪除運算的線性表,稱插入、刪除這一端為棧頂,另一端稱為棧底。表中無元素時為空棧。棧 的修改是按後進先出的原則進行的,我們又稱棧為lifo表(last in first out)。

通常棧有順序棧和鏈棧兩種儲存結構。 棧的基本運算有六種: ·構造空棧:

initstack(s) ·判棧空: stackempty(s) ·判棧滿: stackfull(s) ·進棧:

push(s,x) ·退棧: pop(s) ·取棧頂元素:stacktop(s) 在順序棧中有"上溢"和"下溢"的現象。

·"上溢"是棧頂指標指出棧的外面是出錯狀態。 ·"下溢"可以表示棧為空棧,因此用來作為控制轉移的條件。 順序棧中的基本操作有六種:

·構造空棧·判棧空·判棧滿·進棧·退棧·取棧頂元素 鏈棧則沒有上溢的限制,因此進棧不要判棧滿。鏈棧不需要在頭部附加頭結點,只要有連結串列的頭指標就可以了。 鏈棧中的基本操作有五種:

·構造空棧·判棧空·進棧·退棧·取棧頂元素 佇列(queue)是一種運算受限的線性表,插入在表的一端進行,而刪除在表的另一端進行,允許刪除的一端稱為隊頭(front),允許插入的 一端稱為隊尾(rear) ,佇列的操作原則是先進先出的,又稱作fifo表(first in first out) 。佇列也有順序儲存和鏈式儲存兩種儲存結 構。 佇列的基本運算有六種:

·置空隊:initqueue(q) ·判隊空:queueempty(q) ·判隊滿:

queuefull(q) ·入隊:enqueue(q,x) ·出隊:dequeue(q) ·取隊頭元素:

queuefront(q) 順序佇列的"假上溢"現象:由於頭尾指標不斷前移,超出向量空間。這時整個向量空間及佇列是空的卻產生了"上溢"現象。

為了克服"假上溢"現象引入迴圈向量的概念,是把向量空間形成一個頭尾相接的環形,這時佇列稱迴圈佇列。 判定迴圈佇列是空還是滿,方法有三種: ·一種是另設一個布林變數來判斷; ·第二種是少用一個元素空間,入隊時先測試((rear+1)%m = front)?

滿:空; ·第三種就是用一個計數器記錄佇列中的元素的總數。 佇列的鏈式儲存結構稱為鏈佇列,一個鏈佇列就是一個操作受限的單連結串列。

為了便於在表尾進行插入(入隊)的操作,在表尾增加一個尾指 針,一個鏈佇列就由一個頭指標和一個尾指標唯一地確定。鏈佇列不存在隊滿和上溢的問題。在鏈佇列的出隊演算法中,要注意當原隊中只 有一個結點時,出隊後要同進修改頭尾指標並使佇列變空。

3d3s和pkpm哪個用於鋼結構設計更好想學習3d3s建

pkpm是個超級大型的軟體,而3d3s只是個鋼結構專業軟體,3d3s利用cad平臺建模,相對容易點,但是功能相對弱很多 首先是沒有標準h型鋼截面,對於國標h型鋼截面只能手工輸入 計算時間太長,pkpm計算一個十幾層樓的大型結構也只不過1分多鐘,而3d3s計算這樣的結構時間是個未知數 3d3s不能模擬...

本人要買個筆記本主要用於設計和玩下3D遊戲價錢在之間

買筆記本 首先,要看自己的預算 其次,再看品牌的認知度 然後,看品牌的質量和售後服務 綜合質量,售後服務,品牌,散熱和配置等各方面的話,推薦戴爾的商用電腦,長時間使用穩定散熱好 戴爾高價效比商務筆記本vostro成就1450 配置編號v1450d 278,4899 cpu i5 2430m 記憶體2...

我是白羊座喜歡白色黑色和深藍色請描述我的性格

白羊想象力比較好,喜歡黑白色的人中規中矩,藍色比較憂鬱。綜上所述,藍色性格,比較內斂,謝謝。喜歡自由,簡單,又想保有一點神祕感 每個星座的幸運顏色和幸運數字是什麼?幸運色白羊座的性格顏色是紅色 幸運顏色是金黃色或寶藍色。金牛座的性格顏色是粉紅或淡藍色 幸運顏色是黃色或紅色。雙子座的性格顏色是淡黃或橘...