資料結構之順序棧和迴圈佇列

2022-06-29 17:57:07 字數 2009 閱讀 9699

1

//順序棧

2 #include 3

using

namespace

std;

4const

int stacksize = 5;5

class

seqstack6;

18seqstack::seqstack()

1922 seqstack::~seqstack()

2326

intseqstack::empty()

2732

else

33return0;

34}35int

seqstack::gettop()

3641

else

4245}46

void seqstack::push(int

x)47

53else

5457}58

intseqstack::pop()

5965 x = data[top--];

66return

x;67}68

intmain()

6978

catch (char

const*str)

7982

try83

87catch (char

const*str)

8891

try92

98catch (char

const*str)

99102

if (s.empty() == 1

)103 cout << "

棧為空"

<104else

105 cout << "

棧非空"

<106return0;

107}

108109

110//

迴圈佇列

111 #include 112

using

namespace

std;

113const

int queuesize = 5

;114

class

cirqueue

115;

127cirqueue::cirqueue()

128131 cirqueue::~cirqueue()

132135

void cirqueue::enqueue(int

x)136

141 rear = (rear + 1) % queuesize;//

隊尾指標在迴圈意義下加1

142 data[rear] = x;//

在隊尾處插入元素

143}

144int

cirqueue::dequeue()

145150 front = (front + 1) % queuesize;//

隊頭指標在迴圈意義下加1

151return

data[front];

152}

153int

cirqueue::getqueue()

154159

return data[(front + 1) % queuesize]; //

注意不修改隊頭指標

160}

161int

cirqueue::empty()

162167

else

168171

}172

intmain()

173188

catch (char

const*str)

191try

192196

catch (char

const*str)

199if (q.empty() == 1) cout << "

隊列為空

"<200else cout << "

佇列非空

"<201return0;

202 }

資料結構 棧和佇列 順序棧

順序棧 main.c include include sqstack.h intmain push s,data selemtype x while isemtpy s destroystack s return0 sqstack.c include include include sqstack....

資料結構之迴圈佇列和棧的應用

前面提到,在佇列的順序儲存結構中,必須要討論順序佇列的陣列越界 或上溢 問題。根據順序佇列的定義,我們可以很輕鬆的發現,當佇列刪除乙個元素之後,即front指標向後移動之時,往往這個時候就有可能出現所謂的 假溢位 現象,即可能會出現下圖所示這般 解決 假溢位 的辦法有很多,其中最為出色的是這四種方法...

資料結構之佇列(順序儲存),實現迴圈佇列

迴圈佇列利用順序佇列的第2種出隊方式 1.使用隊頭 front 向後移動,而不是通過將整個佇列向前移動,大大提高了出隊的效率。2.使用迴圈佇列,解決了第2種出隊方式浪費儲存空間的問題。3.也就是說,迴圈佇列出隊效率高,儲存空間利用率高。空佇列 迴圈佇列 插入元素 滿佇列 方法 1.利用取模 2.判斷...