自建演算法庫——順序環形佇列
本次實踐將建立順序環形佇列的演算法庫,用於之後的工程中
實現源**如下:
1.squeue.h
[cpp]view plaincopy
*問題描述:定義順序環形佇列儲存結構,實現其基本運算,並完成測試。
要求:1、標頭檔案sqqueue.h中定義資料結構並宣告用於完成基本運算的函式。對應基本運算的函式包括:
voidinitqueue(sqqueue*&q);//初始化順序環形佇列
voiddestroyqueue(sqqueue*&q);//銷毀順序環形佇列
boolqueueempty(sqqueue*q);//判斷順序環形佇列是否為空
intqueuelength(sqqueue*q);//返回佇列中元素個數,也稱佇列長度
boolenqueue(sqqueue*&q,elemtypee);//進隊
booldequeue(sqqueue*&q,elemtype&e);//出隊
2、在sqqueue.cpp中實現這些函式
3、在main函式中完成測試,包括如下內容:
(1)初始化佇列q
(2)依次進佇列元素a,b,c
(3)判斷佇列是否為空
(4)出隊乙個元素
(5)輸出佇列中元素個數
(6)依次進佇列元素d,e,f
(7)輸出佇列中元素個數
(8)將佇列中所有元素刪除,並輸出序列
(9)釋放佇列
*輸入描述:無
*程式輸出:完成測試後的執行結果
#include
#include
#definemaxsize100
typedefcharelemtype;
typedefstruct
elemtypedata[maxsize];
intfront,rear;
}sqqueue;
voidinitqueue(sqqueue*&q);//初始化順序環形佇列
voiddestroyqueue(sqqueue*&q);//銷毀順序環形佇列
boolqueueempty(sqqueue*q);//判斷順序環形佇列是否為空
intqueuelength(sqqueue*q);//返回佇列中元素個數,也稱佇列長度
boolenqueue(sqqueue*&q,elemtypee);//進隊
booldequeue(sqqueue*&q,elemtype&e);//出隊
2.squeue.cpp
[cpp]view plaincopy
#include"sqqueue.h"
voidinitqueue(sqqueue*&q)//初始化順序環形佇列
q=(sqqueue*)malloc(sizeof(sqqueue));
q->front=q->rear=0;
voiddestroyqueue(sqqueue*&q)//銷毀順序環形佇列
free(q);
boolqueueempty(sqqueue*q)//判斷順序環形佇列是否為空
return(q->front==q->rear);
intqueuelength(sqqueue*q)//返回佇列中元素個數,也稱佇列長度
return((q->rear-q->front+maxsize)%maxsize);
boolenqueue(sqqueue*&q,elemtypee)//進隊
if((q->rear+1)%maxsize==q->front)
returnfalse;
q->rear=(q->rear+1)%maxsize;
q->data[q->rear]=e;
returntrue;
booldequeue(sqqueue*&q,elemtype&e)//出隊
if(q->front==q->rear)
returnfalse;
q->front=(q->front+1)%maxsize;
e=q->data[q->front];
returntrue;
3main.cpp
[cpp]view plaincopy
#include
#include"sqqueue.h"
intmain()
sqqueue*q;
elemtypee;
initqueue(q);//初始化佇列
printf("該佇列已初始化,");//判斷順序環形佇列是否為空
if(queueempty(q))
printf("為空\n");
else
printf("不為空\n");
if(enqueue(q,'a')==0)//依次進佇列元素abc
printf("該佇列已滿,進隊失敗\n");
printf("元素a進隊成功\n");
if(enqueue(q,'b')==0)
printf("該佇列已滿,進隊失敗\n");
printf("元素b進隊成功\n");
if(enqueue(q,'c')==0)
printf("該佇列已滿,進隊失敗\n");
printf("元素c進隊成功\n");
if(queueempty(q))//判斷順序環形佇列是否為空
printf("該隊列為空\n\n");
else
printf("該佇列不為空\n\n");
if(dequeue(q,e)==0)//出隊乙個元素
printf("此時隊列為空,出隊失敗\n");
printf("元素%c出隊成功\n",e);
printf("此時佇列中元素個數為:%d\n\n",queuelength(q));//輸出佇列中元素個數
if(enqueue(q,'d')==0)//依次進佇列元素def
printf("該佇列已滿,進隊失敗\n");
printf("元素d進隊成功\n");
if(enqueue(q,'e')==0)
printf("該佇列已滿,進隊失敗\n");
printf("元素e進隊成功\n");
if(enqueue(q,'f')==0)
printf("該佇列已滿,進隊失敗\n");
printf("元素f進隊成功\n");
printf("此時佇列中元素個數為:%d\n\n",queuelength(q));//輸出佇列中元素個數
printf("出隊序列為:");//將佇列中所有元素刪除並輸出序列
while(!queueempty(q))
dequeue(q,e);
printf("%c",e);
destroyqueue(q);//釋放佇列
printf("\n該佇列已銷毀\n");
return0;
執行結果截圖如下:
資料結構之自建演算法庫 順序環形佇列
本文針對資料結構基礎系列網路課程 3 棧和佇列中第9課時環形佇列的儲存及基本操作。下圖是資料儲存結構設計及各種操作實現的要點 順序環形佇列演算法庫採用程式的多檔案組織形式,包括兩個檔案 1.標頭檔案 sqqueue.h,包含定義順序環形佇列資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef...
資料結構之自建演算法庫 順序環形佇列
本文針對資料結構基礎系列網路課程 3 棧和佇列中第9課時環形佇列的儲存及基本操作。下圖是資料儲存結構設計及各種操作實現的要點 順序環形佇列演算法庫採用程式的多檔案組織形式,包括兩個檔案 1.標頭檔案 sqqueue.h,包含定義順序環形佇列資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef...
建立順序環形佇列演算法庫
標頭檔案 define maxsize 5 typedef char elemtype typedef struct sqqueue void initqueue sqqueue q 初始化順序環形佇列 void destroyqueue sqqueue q 銷毀順序環形佇列 bool queuee...