1. 程式人生 > >【C語言】佇列演示(佇列的幾個函式)

【C語言】佇列演示(佇列的幾個函式)

/*
 * 佇列演示(佇列的幾個函式)
 * */
typedef struct {
    int arr[SIZE];
    int head; //記錄最前面數字所在的下標
    int tail; //記錄最後一個有效數字的下一個座標
                //如果佇列裡一個數都沒有的話head=tail
} queue;

//佇列的初始化函式
void queue_init(queue *p_queue) {
    p_queue->head = 0;
    p_queue->tail = 0;
}

//佇列清理函式
void queue_deinit(queue *p_queue) {
    p_queue->head = 0
; p_queue->head = 0; } //計算數字個數 int queue_size(const queue *p_queue) { return (p_queue->tail - p_queue->head); } //判斷佇列是否為空 int queue_empty(const queue *p_queue) { return !(p_queue->tail - p_queue->head); } //判斷佇列是否滿的 int queue_full(const queue *p_queue) { return p_queue->tail >= SIZE;//tail當吧最後一個SIZE-1使用後變為SIZE,為保險要大於
} //向佇列里加入數字 int queue_push(queue *p_queue, int val) { if(queue_full(p_queue)) { return 0; } else { p_queue->arr[p_queue->tail] = val; p_queue->tail++; return 1;//表示將數字加進去了 } } //從佇列裡獲得數字的(會把數字從佇列裡刪除) int queue_pop(queue *p_queue, int *p_num) { if
(queue_empty(p_queue)) { return 0; } else { *p_num = p_queue->arr[p_queue->head];//因為要刪除,所以先給 p_queue->head++;//將取過的數跳過去 return 1; } } //從佇列裡獲得數字(不會把數字從佇列刪除) int queue_front(const queue *p_queue, int *p_num) { if(queue_enpty(p_queue)) { return 0; } else { *p_num = p_queue->arr[p_queue->head];//多次呼叫是同一個數 return 1; } }