順序環形佇列儲存結構中的基本運算有如下幾項:
1、初始化順序環形結構
令front=rear=0 。
2、銷毀順序環形佇列
用free()將其釋放 。
3、判斷順序環形佇列是否為空
通過front==rear 判斷佇列是否為空 。
4、判斷順序環形佇列是否為滿
通過(rear+1)%maxsize==front 判斷佇列是否為滿 。
5、進隊
首先判斷佇列是否為滿,如果滿則返回false
如果不滿則執行q->rear=(q->rear+1)%maxsize; q->data[q->rear]=e; 返回為true 。
6、出隊
首先判斷佇列是否為空,如果滿則返回false
如果不空則執行q->front=(q->front+1)%maxsize; e=q->data[q->front]; 返回為true 。
一、首先建立標頭檔案sqqueue.h 在其中定義資料結構並宣告基本運算函式
#ifndef sqqueue_h_included
#define sqqueue_h_included
#define maxsize 5
typedef char elemtype;
typedef struct
sqqueue;
void initqueue(sqqueue *&q); //初始化順序環形佇列
void destroyqueue(sqqueue *&q); //銷毀順序環形佇列
bool queueempty(sqqueue *q); //判斷順序環形佇列是否為空
int queuelength(sqqueue *q); //返回佇列中元素個數,也稱佇列長度
bool enqueue(sqqueue *&q,elemtype e); //進隊
bool dequeue(sqqueue *&q,elemtype &e); //出隊
#endif // sqqueue_h_included
二、其次建立原始檔 sqqueue .cpp,實現標頭檔案中定義的基本運算函式
#include #include #include "sqqueue.h"
void initqueue(sqqueue *&q) //初始化順序環形佇列
void destroyqueue(sqqueue *&q) //銷毀順序環形佇列
bool queueempty(sqqueue *q) //判斷順序環形佇列是否為空
int queuelength(sqqueue *q) //返回佇列中元素個數,也稱佇列長度
bool enqueue(sqqueue *&q,elemtype e) //進隊
bool dequeue(sqqueue *&q,elemtype &e) //出隊
三、建立main.cpp 用來測試**
#include #include "sqqueue.h"
int main()
printf("\n");
printf("(9)釋放佇列\n");
destroyqueue(q);
return 0;
}
程式測試截圖:
環形佇列相對於直線佇列來講,直線佇列在元素出隊之後,頭指標向後移動,導致刪除元素後的空間無法再利用,即使元素個數小於空間大小,依然無法再進行插入,即所謂的「假溢位」,當變成迴圈佇列之後,刪除元素後的空間仍然可以利用,可以最大限度的利用空間。
第七周專案1 建立順序環形佇列演算法庫
問題及 1 sqqueue.h ifndef sqqueue h included define sqqueue h included define maxsize 5 typedef char elemtype typedef struct sqqueue void initqueue sqque...
第七周 專案1 建立順序環形佇列演算法庫
main.cpp all right reserved 檔名稱 sqqueue.cpp 完成日期 2015年10月13日 19 26 版本號 v1.0 問題描述 建立順序環形佇列演算法庫 include include sqqueue.h int main printf n printf 9 釋放佇...
第七周專案1 建立順序環形佇列演算法庫
01.04.檔名稱 test.cpp 05.作 者 高露 06.完成日期 2015.10.16 07.版 本 號 v1.0 08.09.問題描述 定義順序環形佇列儲存結構,實現其基本運算,並完成測試。10.輸入描述 11.程式輸出 12.13.include 14.include sqqueue.h...