資料結構與演算法之迴圈佇列的操作

2021-09-28 14:52:01 字數 2242 閱讀 2809

/*

迴圈佇列的入隊和出隊演算法設計

初始化迴圈佇列 、列印佇列、插入元素到迴圈佇列、獲取迴圈佇列的首元素,元素不出隊、出隊、獲取迴圈佇列元素個數、判斷迴圈佇列的空和滿。

核心:迴圈隊列入隊, 隊尾迴圈後移: 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語言版 清華大學出版社,嚴蔚敏 吳偉民 編著 如果我們將佇列設定為順序儲存結構,那麼,因為出隊的時候是從隊首出隊,入隊的時候是從隊尾入隊,而入隊需要在後面的記憶體中開闢空間,一直這樣總會把所有的記憶體耗盡.雖然我們在出隊的時候會釋放空間,但是釋放的空間是在靠前的記憶體位址...

資料結構與演算法 迴圈佇列

迴圈佇列 實際中我們還會用到一種佇列叫做迴圈佇列,這種佇列把儲存空間前後連線起來,形成像環一樣的結構,解決了記憶體空間浪費的問題 這裡我們用順序結構來實現,因為為了防止溢位的情況,這裡我們需要多開乙個資料的空間用作緩衝,這部分不用於存資料,用於防止溢位,當陣列訪問到這一部分時就將他歸零,實現迴圈的結...