佇列是一種特殊的
線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(tail)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。
以陣列實現的佇列結構,如果是普通佇列,頻繁增刪元素,會造成陣列記憶體空間的大量流失,所以便有了迴圈佇列,以填補流失的記憶體空間。
以下為實現普通佇列與迴圈佇列的**:
1. 普通佇列實現**:
#include #include #include #include using namespace std;
#define maxn 100
#define push_error 0x1
#define pop_error 0x2
/*front : 佇列頭
佇列大小為maxn
tail : 佇列尾
*/typedef struct que;
//初始化佇列
void init_que(que *q)
//入佇列
int push(que *q , int val)else
return 0;
}//出佇列
int pop(que *q)else
return 0;
}//求佇列大小
int calc_size(que *q)
//求佇列頭元素
int front(que *q)
int main(void)
2. 迴圈佇列實現**:
#include #include #include #include using namespace std;
#define maxn 4
#define push_error 0x1
#define pop_error 0x2
/*front : 佇列頭
由於front指標指向元素置為空,所以佇列大小為maxn-1
tail : 佇列尾
*/typedef struct que;
//初始化佇列
void init_que(que *q)
//入佇列
int push(que *q , int val)else
return 0;
}//出佇列
int pop(que *q)else
return 0;
}//求佇列大小
int calc_size(que *q)
//求佇列頭元素
int front(que *q)
int main(void)
資料結構 陣列佇列 迴圈佇列
佇列 是 先進先出 的資料結構,從隊尾入隊,從隊頭出隊。佇列中使用的array,參考 資料結構 手寫動態陣列 public inte ce queue public class arrayqueue implements queue public arrayqueue int capacity ov...
資料結構 靜態陣列實現迴圈佇列
靜態陣列實現迴圈佇列不需要考慮空間的釋放。迴圈佇列的實現主要重點是在兩個指標的比較上。include define maxsize 10 define elemtype int define status int define ok 1 define error 0 typedef struct q...
佇列 陣列結構實現(迴圈佇列)
當元素較少時 tail位置在front後面 迴圈佇列與普通佇列出隊操作一樣,入隊的元素將會放在tail的位置上,隨後執行tail 操作 出隊時front位置上的元素將會置null,隨後執行front 操作 此時仍能保持著tail位置在front後面的狀態,如下圖所示 當元素繼續新增,最後乙個元素將放...