1、佇列的定義:佇列是一種特殊的線性表,線性表兩端都可以進行插入刪除,而佇列只能在隊頭刪除,隊尾插入。插入元素稱為入隊,刪除元素稱為出隊。
2、佇列的特點:
(1)只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表
(2)進行插入操作的一端稱為隊尾(入佇列)
(3)進行刪除操作的一端稱為隊頭(出佇列)
(4)佇列具有先進先出(fifo)的特性
3、佇列的分類:順序佇列和環形佇列
由於順序佇列在操作上有諸多不便,(出佇列時,要進行元素的搬移,效率低下,還會出現假溢位的問題)在此我們可以建立迴圈的順序佇列,即環形佇列。
4、環形佇列的入隊 :
5、環形佇列的實現:
(1)squeue.h:
//順序表實現環形佇列
//環形的目的是為了提高出隊的時間複雜度
//浪費乙個單元不使用,是為了區分隊滿和隊空
#define size 10
typedef struct squeue
squeue,*psqueue;
void initqueue(psqueue ps);
//入隊
bool push(psqueue ps,int val);
//獲取隊頭的值,但不刪除
bool gettop(psqueue ps,int *rtval);
//獲取隊頭的值,且刪除
bool pop(psqueue ps,int *rtval);
//判斷隊空
bool isempty(psqueue ps);
(2)squeue.cpp:
#include "squeue.h"
#include #include #include void initqueue(psqueue ps)
ps->front = 0;
ps->rear = 0;
}static bool isfull(psqueue ps)
//入隊
bool push(psqueue ps,int val)
ps->elem[ps->rear] = val;
ps->rear = (ps->rear+1)%size;
return true;
}//獲取隊頭的值,但不刪除
bool gettop(psqueue ps,int *rtval)
if(rtval != null)
return true;
}//獲取隊頭的值,且刪除
bool pop(psqueue ps,int *rtval)
if(rtval != null)
return true;
}//判斷隊空
bool isempty(psqueue ps)
(3)main.cpp:
#include #include "squeue.h"
int main()
while(!isempty(&ps))
return 0;
}
資料結構 環形佇列 迴圈佇列 順序儲存
佇列是對頭出 隊尾入的先進先出線性表。需要兩個指標front和rear分別來指向隊頭和隊尾。front指向隊頭元素的前乙個位置,rear總是指向隊尾元素。進隊 rear 1 出隊 front 1 隊空條件 front rear 隊滿條件 rear maxsize 1 但是這樣會出現假溢位的情況,因為...
資料結構 迴圈鍊錶實現環形佇列
迴圈鍊錶寫迴圈佇列,只用乙個隊尾指標就夠了,因為迴圈鍊錶中隊尾節點的下乙個節點就是隊首節點。隊空條件 隊滿條件 不考慮 進隊操作 將新的節點插入到隊尾,稱為隊尾節點,然後隊尾指標指向這個新的節點。include include include define error 0 define ok 1 t...
順序表實現佇列 資料結構作業
實現通過鍵盤進行插入 實現通過鍵盤進行刪除 良好的人機互動 順序表實現迴圈佇列 如下 迴圈佇列的基本操作 include define maxsize 50 typedef int elemtype 定義迴圈佇列結構體 typedef struct sqqueue 初始化 void initqueu...