佇列的十個問題

2021-08-15 11:34:22 字數 2266 閱讀 9706

1、

佇列與棧的區別

棧是先進後出,而佇列是先進先出。佇列是特殊的線性表,僅能從隊頭和隊尾進行操作。隊頭:取出資料的資料的一端,隊尾:放入資料的一端。而棧僅能從棧頂進行操作。 2、

常見的佇列的操作

建立佇列:create queue;引數指定佇列可以儲存的元素的最大數量,此函式只適用於動態分配陣列的佇列。

銷毀佇列:destory queue;只適用於鏈式和動態分配記憶體的佇列。 3、

迴圈佇列的性質

1.頭指標指向對頭元素,尾指標指向隊尾的下乙個位置。

(這裡的指標都是為指標,實際是陣列序號)

2.為了區分隊滿與對空,則定義乙個儲存空間為

max_qsize

大小的佇列只允許存放

max_qsize-1

個資料。

3.判空條件為

:if(q.front ==q.rear) return true;

判滿條件為

:if((q.rear+1)%max_qsize==q.front) return true;

4.迴圈佇列的長度為

:(q.read-q.front+max_size)%max_qsize

5.當刪除對頭元素或者在對尾插入元素時指標均需向後移動。操作為:

q.rear=(q.rear+1)%max_qsize;

q.front=(q.front+1)%max_qsize. 4、

如何區分空隊和滿隊

隊頭指標在隊尾指標的下一位置時,隊滿。 q.front == (q.rear + 1) % maxsize 因為隊頭指標可能又重新從

0位置開始,而此時隊尾指標是

maxsize - 1

,所以需要求餘。

當隊頭和隊尾指標在同一位置時,隊空。 q.front == q.rear; 5、

假溢位現象的原因

在非空佇列裡,隊首指標始終指向隊頭元素

,而隊尾指標始終指向隊尾元素的下一位置。順序佇列中存在「假溢位」現象。因為在入隊和出隊操作中

,頭、尾指標只增加不減小

,致使被刪除元素的空間永遠無法重新利用。因此

,儘管佇列中實際元素個數可能遠遠小於陣列大小

,但可能由於尾指標巳超出向量空間的上界而不能做入隊操作。該現象稱為假溢位。 6、

佇列的順序儲存結構

順序儲存結構儲存的佇列稱為順序佇列.和順序表一樣

,用乙個一維陣列存

.對頭在陣列的低下標端

,隊尾設在高下表端.隊頭

,隊尾指標值是陣列元素的下標

.對頭指標始終指向對頭結點的前乙個結點位置

,初始值為

0.隊尾指標是指向隊尾結點位置

,初始值也為0。

7、佇列的插入操作

secyclequeue incyclequeue(secyclequeue  q,cdt x)

else

return q; }

8、佇列的刪除操作

#include "queuecyclecontrol.h"

secyclequeue outcyclequeue(secyclequeue q)

else

return q; }

9、佇列的鏈儲存結構

鏈儲存結構儲存的佇列稱為鏈佇列.隊頭指標指向鏈佇列的頭結點

,頭結點的指標域若為空

,則為空佇列

;若不為空

,則為指向隊首結點的指標。

鏈佇列設有乙個隊頭指標,其值指向佇列的頭結點

.也是唯一地標示乙個鏈隊

.設定乙個隊尾指標方便插入結點

.隊頭指標和隊尾指標都是指標型變數。鏈佇列沒有容量的限制

,所以在可用的儲存空間範圍內

,一般不會出現上溢問題

,也不存在如順序佇列的假溢位問題。

10、佇列的插入操作

#include "queuelinkcontrol.h"#include

linkqueue * inlinkqueue(linkqueue *lq,ldt x)

linknode  *q; //1.初始化插入的結點

q=(linknode *)malloc(sizeof(linknode));

q->data=x;

q->next=null;

lq->rear->next=q; //2.插入式從隊尾插入

,將插入的結點插入隊尾

lq->rear=q;

printf("in link queue success!\n");

return lq; }

指標的十個問題

1.如何判斷指標的型別和指標指向的型別?從語法角度看,只要把指標宣告語句裡的指標名字去掉,剩下的部分就是這個指標的型別 把指標宣告語句中的指標名字和名字左邊的指標宣告符 去掉,剩下的就是指標所指向的型別 2.指標的值是什麼?乙個指標的值是xx,就是說該指標指向了一xx為首位址的一片記憶體區域 3.常...

NO 2 常見的十個問題

linux的常用工具 1.vim編輯器 vi 是老版本 但是我們一般都是用vim 兩者的差別並不大 2.gcc工具鏈就是編譯器 3.make和makefile 4.gdb除錯工具 5.shell使用基礎 注意一點我們平時用的linux一般是指核心,而linux發行版則是加了一些模組使其更具有針對性,...

每天問自己十個問題

如果你想走出常規,放鬆心情,以積極的心態開始每一天,那就很有必要以自問的方式開始一天,這些問題會給我們帶來力量和好心情。1 我擁有什麼?通常我們會為自己沒有的東西而苦惱,卻看不到自己擁有的,如健康 可以聽 可以看,可以愛與被愛,每天都有食物供我們享用等。正如那句口口相傳的話所說的 失去了才知道珍貴。...