/*
迴圈佇列的入隊和出隊演算法設計
初始化迴圈佇列 、列印佇列、插入元素到迴圈佇列、獲取迴圈佇列的首元素,元素不出隊、出隊、獲取迴圈佇列元素個數、判斷迴圈佇列的空和滿。
核心:迴圈隊列入隊, 隊尾迴圈後移: sq->rear =(sq->rear+1)%maxsize;
迴圈佇列出隊, 隊首迴圈後移: sq->front =(sq->front+1)%maxsize;
隊空:sq.front=sq.rear; // sq.rear 和 sq.front 指向同乙個位置
隊滿: (sq.rear+1) %maxsize=sq.front; // sq.rear 向後移一位正好是 sq.front
計算元素的個數: (sq.rear-sq.front+maxsize)% maxsize;
//迴圈佇列的入隊和出隊演算法設計
#include
#include
#define maxsize 6
//定義本迴圈佇列的最大容量
using
namespace std;
typedef
struct _lqueue lqlist;
//初始化迴圈佇列
bool
initlqlist
(lqlist *duilie)
//插入元素到迴圈佇列
bool
inserlq
(lqlist* duilie,
int&element)
else
return
true;}
//列印佇列
void
printlq
(lqlist *duilie)
return;}
//獲取迴圈佇列的首元素,元素不出隊
bool
getlqfirst
(lqlist *duilie,
int&element)
//出隊
bool
outlq
(lqlist *duilie,
int&element)
else
return
true;}
//獲取迴圈佇列元素個數
void
getlen
(lqlist *duilie)
intmain
(void
)else
//迴圈隊列入隊
int num;
//使用者想要入隊或者出隊的個數
cout <<
"請輸入你想要入隊的個數(本程式設定的迴圈佇列最大容量為5): "
; cin >> num;
//直到使用者輸入正確的入隊個數為止
while(1
)else
}int element =0;
for(
int i =
0; i < num; i++
)else
}//列印迴圈佇列裡的元素
printlq
(duilie)
;//獲取迴圈佇列的首元素,元素不出列if(
getlqfirst
(duilie,element)
)else
//迴圈佇列出隊
cout <<
"請輸入你想要出隊的個數: "
; cin >> num;
cout << endl;
//直到使用者輸入正確的出隊個數為止
while(1
)else
}for
(int i =
0; i < num; i++
)else
}printlq
(duilie)
;getlen
(duilie)
; cout <<
"在入隊乙個元素吧,這可是迴圈佇列喲!"
<< endl;
cout <<
"請輸入你想要插入的元素: "
資料結構與演算法之迴圈佇列
include include define maxsize 20 迴圈佇列它的容量是固定的,並且它的對頭和隊尾指標都可以隨著元素 入佇列而發生改變。typedef char elemtype typedef struct cyclequeue 迴圈佇列的初始化 void initqueue cyc...
資料結構與演算法 佇列 迴圈佇列
部分內容來自於 資料結構 c語言版 清華大學出版社,嚴蔚敏 吳偉民 編著 如果我們將佇列設定為順序儲存結構,那麼,因為出隊的時候是從隊首出隊,入隊的時候是從隊尾入隊,而入隊需要在後面的記憶體中開闢空間,一直這樣總會把所有的記憶體耗盡.雖然我們在出隊的時候會釋放空間,但是釋放的空間是在靠前的記憶體位址...
資料結構與演算法 迴圈佇列
迴圈佇列 實際中我們還會用到一種佇列叫做迴圈佇列,這種佇列把儲存空間前後連線起來,形成像環一樣的結構,解決了記憶體空間浪費的問題 這裡我們用順序結構來實現,因為為了防止溢位的情況,這裡我們需要多開乙個資料的空間用作緩衝,這部分不用於存資料,用於防止溢位,當陣列訪問到這一部分時就將他歸零,實現迴圈的結...