資料結構 棧部分 雙棧共享空間

2021-10-07 12:40:33 字數 2161 閱讀 1584

#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...