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 型別...