順序佇列基本操作的實現

2021-08-18 19:58:38 字數 1698 閱讀 7729

順序佇列和前面的順序表一樣,相當於乙個陣列,不同的是它的有效區間,當陣列走到最大時,又會從頭開始,這裡用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...