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 我擁有什麼?通常我們會為自己沒有的東西而苦惱,卻看不到自己擁有的,如健康 可以聽 可以看,可以愛與被愛,每天都有食物供我們享用等。正如那句口口相傳的話所說的 失去了才知道珍貴。...