佇列的表示與實現

2021-08-04 19:58:23 字數 1524 閱讀 2163

佇列是先進先出的(fifo)的線性表,在具體應用中通常使用鍊錶或者陣列實現;只允許在一端插入,在另一端刪除;在佇列中允許插入的一端叫隊尾,允許刪除的一端叫隊頭;

鏈佇列的本質是乙個單向鍊錶,頭結點front相當於head,再增加乙個尾結點。

c語言實現**

#include "stdlib.h"

#include "stdio.h"

//單鏈佇列,佇列的鏈式儲存結構,佇列是由隊頭指向隊尾

typedef

struct qnode qnode,*queueptr;

typedef

struct linkqueue;

//用於初始化佇列

void initqueue(linkqueue &lq)

//用於插入佇列

void enqueue(linkqueue &lq,char data)

//用於取出頭元素,在操作之前首先需要判斷是不是空佇列

void requeue(linkqueue &lq)

else

}int main()

佇列的順序表示和實現,可以參照棧的順序表示和實現;在c語言中不能使用動態陣列來分實現迴圈佇列,如果要使用迴圈佇列則必須設定乙個最大的長度;

* 當q.rare==q.front佇列有可能是滿的,也有可能是空的;有兩種處理辦法:一是另設乙個標誌位以區別是空還是滿;二是約定以「佇列頭指標在隊尾指標的下一位時為滿」。下面的**採用的是第二種方法。

c語言**實現

#include "stdio.h"

#include "stdlib.h"

#define maxsize 100

typedef

struct sqqueue;

//初始化佇列

void initqueue(sqqueue &sq)

sq.front = sq.rear = 0;

}//入隊

void enqueue(sqqueue &sq,int e)

sq.base[sq.rear] = e;

sq.rear = (sq.rear + 1) % maxsize; //轉了一圈後sq.rare會超過maxsize

}//出隊

void requeue(sqqueue &sq)

printf("%d\n",sq.base[sq.front]);

sq.front = (sq.front + 1) % maxsize;

}int main()

鏈式佇列的表示和實現

2014年4月19日 鏈式佇列的實現 用頭結點來儲存鍊錶長度 儲存格式 儲存結構和單鏈表一樣 queue data next data next data next data 0 head node node 0 node 1 end node include include include inc...

佇列的鏈式表示和實現

佇列的鏈式表示和實現 帶頭結點的鏈式佇列 include 定義 typedef struct qnodeqnode,queueptr typedef structlinkqueue 初始化 演算法思想 生成乙個頭結點,是隊頭指標和隊尾指標都指向該頭結點,並將頭結點的指標域置空。int initque...

C C 佇列的實現和表示

一 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱鏈佇列,乙個鏈佇列顯然需要兩個分別指示隊頭和隊尾的指標才能唯一確定 1.佇列的鏈式儲存結構 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 defin...