順序佇列和前面的順序表一樣,相當於乙個陣列,不同的是它的有效區間,當陣列走到最大時,又會從頭開始,這裡用head 和tail兩個下標來表示頭和尾,即當tail到達size時,tail又從0開始,head也是同樣的道理;
**如下:
seqqueue.h
#pragma once
#define seqqueuemaxsize 1000
typedef char seqqueuetype;
typedef struct seqqueueseqqueue;
//初始化
void seqqueueinit(seqqueue* q);
//銷毀
void seqqueuedestroy(seqqueue* q);
//入佇列
void seqqueuepush(seqqueue* q,seqqueuetype value);
//出佇列
void seqqueuepop(seqqueue* q);
//去隊首元素
int seqqueuefront(seqqueue* q, seqqueuetype* value);
seqqueue.c
#include #include #include "seqqueue.h"
void seqqueueinit(seqqueue* q)
q->size = 0;
q->head = 0;
q->tail = 0;
return;
}void seqqueuedestroy(seqqueue* q)
q->size = 0;
q->head = 0;
q->tail = 0;
return;
}void seqqueuepush(seqqueue* q,seqqueuetype value)
if(q->size >= seqqueuemaxsize)
q->data[q->tail] = value;
q->tail++;
if(q->tail >= seqqueuemaxsize)
q->size++;
return;
}void seqqueuepop(seqqueue* q)
if(q->size == 0)
q->head++;
if(q->head >= seqqueuemaxsize)
q->size--;
return;
}int seqqueuefront(seqqueue* q,seqqueuetype* value)
if(q->size == 0)
*value = q->data[q->head];
return 1;
}
test.c
#include #define test_header printf("\n*************************=%s*************************=\n",__function__)
void seqqueueprintchar(seqqueue* q,const char* msg)
printf("\n");
}void testqueue()
int main()
27 順序佇列的基本操作實現
sqqueue.h檔案 ifndef sqqueue h define sqqueue h include include include 陣列大小 define max size 5 定義佇列資料結構 typedef struct sqqueue sqqueue 初始化佇列 sqqueue ini...
順序佇列(迴圈佇列)基本操作實現 C語言
只寫了幾個主要的操作,銷毀,清空等沒有寫 include include define ok 1 define error 0 define queue size 100 typedef int status typedef int elemtype typedef struct qnode qno...
順序迴圈佇列的基本操作
名稱 順序迴圈佇列的基本操作 說明 此處說明以下有關順序迴圈佇列的判斷空,判斷滿的問題。此處採用的是少用乙個儲存元素。此外,還可以採用增加乙個標誌位tag,即指示fro rear是因為空還是因為滿。還有可以增加乙個q.size屬性來判斷是否達到空或者滿的狀態。順序佇列的儲存結構 typedef st...