#include
using
namespace std;
const
int max_cont =
100;
enum stacktype
;template
<
class
datatype
>
class
sqdoublestack
sqdoublestack
(const datatype* a1,
int num1,
const datatype* a2,
int num2);~
sqdoublestack()
;bool
push
(stacktype,datatype)
; datatype pop
(stacktype)
;private
:int top1, top2;
datatype data[max_cont];}
;template
<
class
datatype
>
sqdoublestack
::sqdoublestack
(const datatype* a1,
int num1,
const datatype* a2,
int num2)
i =0;
while
(num2--)}
}template
<
class
datatype
>
bool sqdoublestack
::push
(stacktype temp, datatype a)
template
<
class
datatype
>
datatype sqdoublestack
::pop
(stacktype temp)
else
if(temp == stack_2)
throw
"stacktype err";}
intmain()
;int a2[5]
=;sqdoublestack<
int>
doublestack
(a1,
10, a2,5)
;char a3=
"dhwuhdwuhduhwud"
;char a4=
"znxmncmnvbmbxznv1516546"
; sqdoublestack<
char
>
doublestack2
(a3,
strlen
(a3)+1
, a4,
strlen
(a4)+1
);doublestack.
push
(stack_1,55)
; cout << doublestack.
pop(stack_1)
<< endl;
doublestack.
push
(stack_2,
155)
; cout << doublestack.
pop(stack_2)
<< endl;
doublestack2.
push
(stack_1,
'a')
; cout << doublestack2.
pop(stack_1)
<< endl;
doublestack2.
push
(stack_2,
'b')
; cout << doublestack2.
pop(stack_2)
<< endl;
return0;
}
說明乙個問題:對於構造函式呼叫自身成員函式,是有依據的,首先:建構函式自身也是成員函式;其次:當執行建構函式的時候,物件的資料成員的記憶體已經分配完成;因此建構函式是能夠呼叫其他函式的。
為保證兩個棧共享時不會輕易溢位,該類演算法適用於解決兩個變數,其變化趨勢總是相反的情況。
資料結構 棧 順序棧 雙棧共享同一棧空間 鏈式棧
1 棧,先進後出 後進先出特性 2 3 4 順序棧的靜態儲存結構需要預先定義或申請棧的儲存空間,棧空間容量有限,一旦裝滿不能擴充,元素進棧會發生上溢現象 5 define maxsize 100 棧元素資料型別 6 typedef int selemtype 7 typedef struct 8 s...
資料結構 共享棧和鏈式結構棧
共享棧其實就是兩個棧,合起來,共享乙個陣列存資料。這樣子的好處就是,兩個棧同乙個空間。當棧1的資料多,棧2資料比較少,就可以這樣子共享,對空間的浪費就會減少。當棧1為空,top1 1 棧2為空,top2 n 關鍵 有兩個棧底,和兩個棧頂top1,top2,從陣列兩端向中間靠攏。當 top1 1 to...
資料結構 雙端棧
定義 乙個線性表的兩端當做棧底分別進行入棧和出棧的操作,主要利用了棧 棧底位置不變,而棧頂位置動態變化 的特性。我們把雙端棧叫做arraydoubleendstack,雙端棧是線性表的一種,更是棧的乙個特殊的分類,所以我們可以用動態陣列和棧的思想來實現雙端棧,畢竟由於其操作的特殊性,並不能借助arr...