C語言佇列的理解

2021-07-25 20:49:46 字數 2031 閱讀 2794

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

插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。

佇列的資料元素稱為佇列元素,在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為出隊,因為佇列只允許在一段插入,一端刪除,所以只有最早進入佇列

的元素才能從佇列中刪除,故佇列由稱為先進先出(fifo)

順序佇列

建立順序佇列結構必須為其靜態分配或動態申請一片連續的儲存空間,並設定兩個指標進行管理,乙個是隊頭指標front,它指向隊頭元素,乙個是隊尾指標rear,它指向下乙個入隊元素,位置,每次在隊尾插入乙個元素,rear增加1;每次在隊頭刪除乙個元素,front增加1,隨著插入和刪除的操作進行,佇列元素的各數不斷變化,佇列佔的儲存空間在佇列結構分配的連續空間中移動,當front=rear時,佇列中每有任何元素,稱為空佇列,當rear增加到指向分配的連續空間之外,佇列無法在插入新元素,但這時往往還有大量的可用的空間未被占用,這些空間是已經出對的佇列元素占用過的儲存單元。

隊尾指標指向隊尾元素的下乙個位置(也可以讓rear指向隊尾元素,front指向隊頭元素的前乙個位置,)

迴圈佇列

在實際使用佇列時,為了使佇列空間能重複使用,往往對佇列的使用方法稍加改進,無論插入或刪除,一旦rear指標增加1或front指標增加1時超出分配的佇列空間,就讓它執行這片連續空間的起始位置,自己真從maxsize-1曾1變到0,可用取運算rear% maxsize和front%maxsize來實現,這實際上是吧佇列空間想象成乙個環形空間,環形空間中儲存短語迴圈使用,用這種方法管理的佇列稱為迴圈佇列,

在迴圈佇列中,當隊列為空時,有front=rear,而當所有佇列空間全占滿,也有front=rear,為了區別這兩種情況,規定迴圈佇列最多只能有maxsize-1個佇列元素,當迴圈佇列中只剩乙個儲存單元時,佇列就已經滿了,因此,佇列判空時front=rear,而佇列判滿時front=(rear+1)%maxsize.

status enqueue(linkqueue *q,elemtype e)   //插入佇列

status dequeue(linkqueue *q,elemtype *e)

在迴圈佇列中,q->front==q->rear並不能確定隊列為空,也有可能是佇列已滿,所以採用佇列頭指標在隊尾指標的下一位置來判斷佇列已滿(此方法會浪費乙個記憶體空間)。

#define maxqsize  100

typedef struct

sqqueue;

status initqueue(sqqueue *q)

q->front=q->rear=0;

return ok; }

int queuelength(sqqueue *q)

status enqueue(sqqueue *q,qeletype e)

q->bse[q->rear]=e;

q->rear=(q->rear+1)%q->queuesize;

return ok; }

status dequeue(sqqueue *q,qelemtype *e)

*e=q->base[q->front];

q->front=(q->front+1)%q->queuesize;

return ok; }

status destroyqueue(sqqueue*q)

int main()

destroyqueue(&q);

return 0; }

}

c 佇列的基本操作 C語言佇列

1 佇列是一種先進先出的線性表,只允許在隊尾進行插入,在隊首進行刪除。initqueue 初始化佇列 enqueue 進佇列 dequeue 出佇列 isqueueempty 判斷佇列是否為空 isqueuefull 判斷佇列是否已滿 1 初始化佇列,一般令tail 0,head 0,如果佇列中含有...

佇列(C語言)

include include typedef int elemtype typedef struct list node typedef struct listquene quene 建立空佇列 quene createquene return q 判斷佇列是否為空 bool isemptyque...

C語言 佇列

佇列是一種特殊的 線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的鏈式儲存結構 include include 定義乙個鍊錶 typedef st...