資料結構 佇列

2021-08-21 21:46:58 字數 1899 閱讀 1295

initqueue(&q) :初始化佇列,構造乙個空佇列q

queueempty(q) :判佇列空,若隊列為空返回true,否則false

enqueue(&q,x) :入隊,若佇列q未滿,將x加入,使之成為新的隊尾

dequeue(&q,&x):出隊,若佇列q非空,刪除隊頭元素,並用x返回

gethead(q,&x) :讀隊頭元素,若佇列q非空,則將隊頭元素賦值給x

初始狀態(隊空):q.front=q.rear=0

進隊操作 :隊不滿時,先送值到隊尾元素,再將隊尾指標加1

出隊操作 :隊非空時,先取隊頭元素值,再將對頭指標加1

初始時:q.front=q.rear=0

隊首指標進1:q.front=(q.front+1)%maxsize

隊尾指標進1:q.rear=(q.rear+1)%maxsize

佇列長度:(q.rear+maxsize-q.front)%maxsize

出隊入隊時:指標都按順時針方向進1

陣列實現

//佇列操作

#include#define maxsize 50

#define elemtype int

typedef structsqqueue;

//初始化

void initqueue(sqqueue *q)

//判隊空

int isempty(sqqueue q)

//入隊

int enqueue(sqqueue *q,elemtype x)

//出隊

int dequeue(sqqueue *q,elemtype *x)

int main()

printf("\n出隊序列為:");

while(!isempty(q))

}

鍊錶實現:

//佇列的鏈式表示方式

#include#include#define elemtype int

typedef struct linknodelinknode;

typedef structlinkqueue;

//初始化佇列

void initlinkqueue(linkqueue *q)

//判隊空

int isempty(linkqueue q)

//入隊

void enlinkqueue(linkqueue *q,elemtype e)

//出隊

int delinkqueue(linkqueue *q,elemtype *e)

int main()

printf("\n出隊序列為:");

while(isempty(q)==0)

return 0;

}

雙端佇列實現《順序》

#include#include#define elemtype int

#define maxsize 50

typedef struct nodesqnode,*squeue;

//初始化佇列

void initqueue(squeue q)

//判空

int isemptyqueue(sqnode q)

//底部出隊

int enbasequeue(squeue q,elemtype *e)

//底部入隊

int debasequeue(squeue q,elemtype e)

//底部出隊

int entopqueue(squeue q,elemtype *e)

//頂部入隊

int detopqueue(squeue q,elemtype e)

int main()

資料結構 佇列

一 佇列的迴圈陣列實現。1 初始化 空佇列。令rear front 0。2 入佇列 約定rear指向佇列尾元素的下乙個位置。入佇列時,先判斷佇列是否已滿,而後將array rear x 然後rear 3 出佇列 約定front指向佇列的首元素位置。出佇列時,先判斷佇列是否為空,而後返回隊首元素re ...

資料結構 佇列

資料參考自 資料結構c 語言描述 佇列是一種先進先出的資料結構,這與棧正好相反。下例是簡單的queue實現 queue.h檔案 ifndef queue h define queue h include include 資料元素結構 自定義 struct datatype 佇列元素最大數 const...

資料結構 佇列

code for fun created by dream whui 2015 1 25 include stdafx.h include include using namespace std define true 1 define false 0 define ok 1 define erro...