建立順序佇列結構必須為其靜態分配或動態申請一片連續的儲存空間,並設定兩個指標進行管理。乙個是隊頭指標front,它指向隊頭元素;另乙個是隊尾指標rear,它指向下乙個入隊元素的儲存位置。
typedef
struct queue
queue,
*pqueue;
queue.h整體結構
typedef
int elemtype;
#define max_size 9
typedef
struct queue
queue,
*pqueue;
void
init
(pqueue pqu)
;int
full
(pqueue pqu)
;//1 full | 0 not full
intenqueue
(pqueue pqu,elemtype val)
;//1 success | 0 fail
intempty
(pqueue pqu)
;//1 empty | 0 not empty
intdequeue
(pqueue pqu)
;//1 success | 0 fail
intfront
(pqueue pqu)
;//獲取隊頭元素
intback
(pqueue pqu)
;//獲取隊尾元素
queue.cpp**實現
#include
#include
#include
"queue.h"
void
init
(pqueue pqu)
//初始化佇列
}int
full
(pqueue pqu)
//判滿
intenqueue
(pqueue pqu,elemtype val)
;//插入元素 入隊
pqu->arr[pqu->rear]
= val;
pqu->rear =
(pqu->rear+1)
%max_size;
return1;
}int
empty
(pqueue pqu)
//判空
intdequeue
(pqueue pqu)
//出隊 只刪除元素,不移動資料
pqu->front =
(pqu->front+1)
%max_size;
return1;
}int
front
(pqueue pqu)
//獲取隊頭元素
return pqu->arr[pqu->front];}
intback
(pqueue pqu)
//獲取隊尾元素
return pqu->arr[
(pqu->rear+max_size-1)
%max_size]
;}
main.cpp**測試
#include
#include
"queue.h"
intmain()
int rtfront =
front
(&que)
;int rtback =
back
(&que)
;printf
("front: %d\n"
, rtfront)
;printf
("back: %d\n"
, rtback)
;dequeue
(&que)
;enqueue
(&que,-1
);rtfront =
front
(&que)
; rtback =
back
(&que)
;printf
("front: %d\n"
, rtfront)
;printf
("back: %d\n"
, rtback)
;return0;
}
迴圈佇列 順序佇列
在前兩篇中講述了順序佇列中的隊頭移動與不移動兩種順序佇列,今天討論順序佇列中的迴圈佇列,這種迴圈佇列是用一維陣列實現的。在隊頭移動的情況下,根據元素個數與佇列容量之間的數量關係來解決假溢位問題。從上圖中我們可以理解為什麼這種佇列結構可以解決假溢位問題,但是隨之而來,我們要如何判定迴圈佇列已滿呢?在此...
佇列 順序迴圈佇列
順序佇列 sequence queue 用一片連續的儲存空間來儲存佇列中的資料元素.用一維陣列來存放順序佇列中的資料元素。隊頭位置設在陣列下標為 0 的端,用 front 表示 隊尾位置設在陣列的另一端,用 rear 表示。front 和 rear 隨著插入和刪除而變化。當隊列為空時,front r...
佇列之順序佇列與迴圈佇列
一 佇列的概念 只能在表的一端進行插入操作,只能在表的另一端進行刪除操作,這種資料結構稱為 佇列。把允許插入的一端叫 隊尾 rear 允許刪除的一端叫 對頭 front 二 佇列的分類 佇列本身也是一種線性表,因而和線性表一樣也有順序和鏈式儲存結構兩種儲存方式。採用順序儲存結構實現的佇列稱為順序佇列...