資料結構 順序表實現環形佇列

2021-09-25 20:39:47 字數 1809 閱讀 6763

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...