佇列的鏈式儲存結構的實現(八)

2021-09-01 19:31:23 字數 2616 閱讀 6640

18.11.25

(基於c語言,歡迎指正)

佇列的鏈式儲存結構,其實就是線性表的單鏈表,只是它只能尾進頭出而已,我們簡稱它為單鏈表,和佇列的順序儲存結構一樣,鏈佇列也需要兩個指向隊首和隊尾的指標front和rear,但是他們的指向稍微有點不同

下文描述中,隊頭等於隊首,但不等於頭結點

對於佇列的順序儲存結構,front指向隊頭,rear指向隊尾的下乙個元素,像這樣

(圖醜了點-_-||)

對於鏈佇列來說可不一樣,front指向的是頭結點(頭結點不是隊首,在隊首前面,頭結點沒有數值),而rear指向隊尾

像這樣

然後就可以開始寫這個程式了

標頭檔案資料型別設定

結點設定

(注意,鏈佇列需要設定兩個結構體,乙個是結點的型別,乙個是佇列的結構體指標其中只包含front和rear,要對整個鏈佇列進行一些入隊出隊或者列印等操作時,都是傳入佇列的結構體指標,而不是只傳乙個結點)

#include#includetypedef int qelemtype;//認為int 是qelemtype

typedef struct qnodeqnode,*queueptr;

typedef structlinkqueue;

一開始的時候,鏈佇列中沒有數值,front和rear都指向頭結點

void initqueue(linkqueue *q)

q->front=h; //front和rear都指向頭結點

q->rear=h;

}

將新插入的元素插在隊尾後面

void enqueue(linkqueue *q,qelemtype e)

s->next=null;//新結點的next指向空

s->data=e;

q->rear->next=s;

q->rear=s;

}

首先要判斷佇列是否已經空了,即front和rear是不是指向頭結點,空了就不能再出了

其次,如果將要出佇列時,只剩下最後乙個元素了,那麼就要先將rear指標指向頭結點,別搞丟了,在將出佇列的結點記憶體釋放掉

void dequeue(linkqueue *q,qelemtype *e)

queueptr p;

p=q->front->next;

*e=p->data;

q->front->next=p->next;

if(q->rear==p)

free(p);

}

需要乙個定位指標p,從隊頭一直走下去

void print(linkqueue *q)

queueptr p;

p=q->front->next;

while(p)

printf("\n");

}

這樣鏈佇列的一些基本操作都寫完了,我們在主函式中除錯一下

#include#includetypedef int qelemtype;//認為int 是qelemtype

typedef struct qnodeqnode,*queueptr;

typedef structlinkqueue;

void initqueue(linkqueue *q)

q->front=h; //front和rear都指向頭結點

q->rear=h;

}void enqueue(linkqueue *q,qelemtype e)

s->next=null;//新結點的next指向空

s->data=e;

q->rear->next=s;

q->rear=s;

}void dequeue(linkqueue *q,qelemtype *e)

queueptr p;

p=q->front->next;

*e=p->data;

q->front->next=p->next;

if(q->rear==p)

free(p);

}void print(linkqueue *q)

queueptr p;

p=q->front->next;

while(p)

printf("\n");

}int main()

printf("此時鏈隊列為:");

print(&q);

printf("輸入要刪除的結點的個數:");

佇列的鏈式儲存結構及實現

佇列的鏈式儲存結構其實就是線性表的單鏈表,只不過它只能尾進頭出,也稱為鏈佇列。為了操作方便講隊頭指標指向鏈佇列的頭結點,而隊尾指標指向終端節點。空佇列是這樣 下面使用 演示 include include include typedef struct node node,pnode typedef ...

佇列的鏈式儲存結構以及實現

佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已,通常簡稱為鏈佇列。為了操作上的方便,將隊頭指標指向鏈佇列的頭結點,隊尾指標指向終端結點。當隊列為空時,front和rear都指向頭結點。鏈佇列的結構定義如下所示 typedef int qelemtype qnode代表佇列中元素...

佇列的鏈式儲存結構及實現

佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已,稱之為鏈佇列。為了操作上的方便,我們將隊頭指標指向鏈佇列的頭結點,將隊尾指標指向終端結點,如下圖所示 空佇列時,頭尾指標都指向頭結點,如下圖所示 鏈佇列的結構為 typedef int qelemtype qelemtype 型別...