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.判斷...