當前位置:編程學習大全網 - 編程語言 - 求高手解答下這道程序結構的題——謝謝

求高手解答下這道程序結構的題——謝謝

#include <assert.h>

template <class Type> class DblStack { //雙棧的類定義

private:

int top[2], bot[2]; //雙棧的棧頂指針和棧底指針

Type *elements; //棧數組

int m; //棧最大可容納元素個數

public:

DblStack ( int sz =10 ); //初始化雙棧, 總體積m的默認值為10

~DblStack ( ) { delete [ ] elements; } //析構函數

void DblPush ( const Type& x, int i ); //把x插入到棧i的棧頂

int DblPop ( int i ); //退掉位於棧i棧頂的元素

Type * DblGetTop ( int i ); //返回棧i棧頂元素的值

int IsEmpty ( int i ) const { return top[i] == bot[i]; } //判棧i空否, 空則返回1, 否則返回0

int IsFull ( ) const { return top[0]+1 == top[1]; } //判棧滿否, 滿則返回1, 否則返回0

void MakeEmpty ( int i ); //清空棧i的內容

}

template <class Type> DblStack<Type> :: DblStack ( int sz ) : m(sz), top[0] (-1), bot[0](-1), top[1](sz), bot[1](sz) {

//建立壹個最大尺寸為sz的空棧, 若分配不成功則錯誤處理。

elements = new Type[m]; //創建棧的數組空間

assert ( elements != NULL ); //斷言: 動態存儲分配成功與否

}

template <class Type> void DblStack<Type> :: DblPush ( const Type& x, int i ) {

//如果IsFull ( ),則報錯;否則把x插入到棧i的棧頂

assert ( !IsFull ( ) ); //斷言: 棧滿則出錯處理,停止執行

if ( i == 0 ) elements[ ++top[0] ] = x; //棧0情形:棧頂指針先加1, 然後按此地址進棧

else elements[--top[1] ] = x; //棧1情形:棧頂指針先減1, 然後按此地址進棧

}

template <class Type> int DblStack<Type> :: DblPop ( int i ) {

//如果IsEmpty ( i ),則不執行退棧,返回0;否則退掉位於棧i棧頂的元素,返回1

if ( IsEmpty ( i ) ) return 0; //判棧空否, 若棧空則函數返回0

if ( i == 0 ) top[0]--; //棧0情形:棧頂指針減1

else top[1]++; //棧1情形:棧頂指針加1

return 1;

}

template <class Type> Type * DblStack<Type> :: DblGetTop ( int i ) {

//若棧不空則函數返回該棧棧頂元素的地址。

if ( IsEmpty ( int i ) ) return NULL; //判棧i空否, 若棧空則函數返回空指針

return& elements[ top[i] ]; //返回棧頂元素的值

}

template <class Type> void MakeEmpty ( int i ) {

if ( i == 0 ) top[0] = bot[0] = -1;

else top[1] = bot[1] = m;

}

我照著資料壹個壹個打出來的。

  • 上一篇:c內存共享進程通信實例
  • 下一篇:數控車床上加工螺紋時發生故障怎麽解決?
  • copyright 2024編程學習大全網