佇列是先進先出的(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...