資料結構 迴圈佇列(C C )

2021-10-06 13:30:30 字數 2127 閱讀 1940

#include

"stdio.h"

#include

"stdlib.h"

#include

"stdbool.h"

#define maxsize 5

typedef

int datatype;

typedef

struct

sqqueue;

bool queueempty

(sqqueue *queue)

;bool enqueue

(sqqueue *queue,

int i)

;datatype gethead

(sqqueue* queue)

;datatype dequeue

(sqqueue *queue)

;int

length

(sqqueue *queue)

;int

main()

,0,0

};sqqueue* pqueue =

&sqqueue;

length

(pqueue)

; bool a =

queueempty

(pqueue)

;printf

("佇列長度:%d\n"

,length

(pqueue));

printf

("入隊:5、4、3、2\n");

enqueue

(pqueue,5)

;// 入隊

enqueue

(pqueue,4)

;enqueue

(pqueue,3)

;enqueue

(pqueue,2)

;printf

("佇列長度:%d\n"

,length

(pqueue));

printf

("出隊:%d\n"

,dequeue

(pqueue));

printf

("入隊:6\n");

enqueue

(pqueue,6)

;printf

("隊頭元素:%d\n"

,gethead

(pqueue));

return0;

}/**

* 返回佇列長度

* @param queue

* @return

*/int

length

(sqqueue *queue)

/** * 獲取隊首值

* @param queue

* @return

*/datatype gethead

(sqqueue* queue)

return queue->data[queue->front];}

/** * 出隊

* @param queue

* @return

*/datatype dequeue

(sqqueue *queue)

int data = queue->data[queue->front]

; queue->front =

(queue->front +1)

% maxsize;

return data;

}/**

* 入隊

* @param queue

* @param value

* @return

*/bool enqueue

(sqqueue *queue,

int value)

queue->data[queue->rear]

= value;

// 注意迴圈佇列隊尾指標的移動方式

queue->rear =

(queue->rear +1)

% maxsize;

return true;

}/**

* 判斷隊空

* @param queue

* @return

*/bool queueempty

(sqqueue *queue)

資料結構 佇列 迴圈佇列

在佇列的陣列實現中,我們很容易發現數在出隊後,陣列的前面部分會有剩餘空間沒有被使用,所以我們為了最大程度的利用固定長度的陣列,我們採用迴圈佇列的儲存方式,這種方式的最大問題在於resize的時候比較麻煩,所以我們不考慮resize的情況。基本結構如下,這裡front指向第乙個元素的位置,rear指向...

資料結構 佇列 迴圈佇列

資料結構 佇列 迴圈佇列 順序儲存 犧牲乙個空間單元來判段佇列滿狀態。q.front q.rear 1 initsize date 2017 4 16 include define elemtype char define initsize 100 typedef structsqqueue voi...

資料結構 迴圈佇列

所謂順序儲存結構就是用一組位址連續的儲存單元依次存放從隊頭到隊尾的元素。宣告兩個指標rear front分別用來指示隊尾元素的下一位置和隊頭元素的位置。初始化時rear front 0 插入新的元素時尾指標加1,元素出佇列時隊頭指標加1。不過這樣做有個問題,不論是入隊還是出隊,隊頭或隊尾指標都是加1...