C語言順序佇列

2022-08-23 19:54:09 字數 1171 閱讀 7604

順序佇列是一種只能在一頭進和另一頭出的資料結構,所以結構體裡設2個指標分別指向頭部和尾部,用陣列來儲存資料。

1

#define maxsize 1024

23 typedef int

elemtype;

45 typedef struct

sequenqueuesequenqueue;

1011 sequenqueue *init_sequenqueue()

1819

20 p->front = 0

;21 p->rear = 0;22

return

p;23

24 }

順序佇列會有一種假溢位的現象:當元素進隊或出隊的時候,front或rear會加一,在乙個陣列中,兩個指標都在向陣列後面移動,直到它倆到達了陣列尾部,但前面就會空出未使用的位置。解決方法就是取餘運算,把它當做迴圈佇列。

進隊的運算:p->rear = (p->rear+1) % maxsize

出隊的運算:p->front = (p->front+1) % maxsize

假設陣列長度為6,開始時front和rear都指向0,進隊abcd四個元素,再進隊ef元素,rear指向下標為0的位置,出隊ab元素front指向c元素。再進隊gh元素使rear和front在同一位置,此時隊滿但卻發現front==rear不能作為隊空的判斷條件。應對方法有2種:一種為少使用乙個位置,如上圖d所示。判斷隊滿的條件為(p->rear+1) % maxsize) == (p->front % maxsize)(右邊取餘運算可省略)。另一種是用計數器的方法,入隊加一出隊減一,一直加到陣列的最大長度即為滿。

1

int sequenqueue_full(sequenqueue *p)910

int sequenqueue_empty(sequenqueue *p)

入隊和出隊

1

int delete_sequenqueue(sequenqueue *p)

1011

int enter_sequenqueue(sequenqueue *p,elemtype e)

靜態順序佇列 C語言

如下 include include define maxsize 20 靜態順序佇列的最大容量 typedef struct sqqueue void initqueue sqqueue q 初始化佇列 void enqueue sqqueue q,int e 入隊 由於是迴圈佇列,故少用乙個元素...

動態順序佇列 C語言

如下 include include define initsize 6 typedef struct sqqueue void initqueue sqqueue q 初始化佇列 void enqueue sqqueue q,int e 進隊 由於是迴圈佇列,故少用乙個元素空間,該函式在有maxs...

佇列的順序實現(c語言)

include include define maxsize 100 typedef struct sqqueuesqqueue 初始化 sqqueue initqueue 入隊 int enqueue sqqueue sqqueue,int elem 出隊 int dequeue sqqueue ...