佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已,我們把它簡稱為鏈佇列。為了操作上的方便,我們將隊頭指標指向鏈佇列的頭結點,而隊尾指標指向終端結點,如下圖所示:
空佇列時,front和rear都指向頭結點。
鏈佇列的結構為:
typedef int qelemtype;
typedef struct qnode
qnode,*queueptr;
typedef struct //佇列的鍊錶結構
linkqueue;
1.入隊操作
入隊操作時,其實就是在鍊錶尾部插入結點,如下圖所示:
**如下:
/* 插入元素e為q新的隊尾元素*/
int enqueue(linkqueue *q, qelemtype e)
s->data = e;
s->next = null;
q->rear->next = s; //把擁有元素e的新結點s賦值給原隊尾結點的後繼
q->rear = s; //把當前的s設定為隊尾結點,rear指向s
return ok;
}
2.出隊操作
出隊操作時,就是頭結點的後繼結點出隊,將頭結點的後繼改為它後面的結點,若煉表除頭結點外只剩乙個元素時,則需將rear指向頭結點,如下圖所示:
**如下:
/* 若佇列不空,刪除q的隊頭元素,用e返回其值,並返回ok,否則返回error*/
int dequeue(linkqueue *q, qelemtype *e)
p = q->front->next; //將欲刪除的隊頭結點暫存給p
*e = p->data; //將欲刪除的隊頭結點的值賦值給e
q->front->next = p->next; //將原隊頭結點後繼p->next賦值給頭結點
if(q->rear == p) //若隊頭是隊尾,則刪除後將rear指向頭結點
free(p);
return ok;
}
佇列的鏈式儲存結構
佇列的鏈式儲存結構可以建立乙個頭結點,乙個指向頭結點的指標front,乙個指向尾節點的指標rear。新增乙個節點的時候將rear指向新節點,取乙個節點的時候將front指向下個節點的下乙個節點。佇列鏈式儲存.cpp 定義控制台應用程式的入口點。include stdafx.h struct link...
佇列的鏈式儲存結構
1 佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已,簡稱為鏈佇列。為了操作上的方便,我們將隊頭指標指向鏈佇列的頭結點,而隊尾指標指向終端結點。空佇列時,front和rear都指向頭結點。鏈佇列的結構為 include using namespace std define ok ...
佇列的鏈式儲存結構
1.定義 佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已,我們把它簡稱為鏈佇列。隊頭指標指向鏈佇列的頭結點,隊尾指標指向終端結點。空佇列時,front和rear都指向頭結點 2.入隊操作 e 把插入的資料賦值給插入的結點的資料域 s next null 插入結點的指標域為空 q...