棧的簡單應用

2021-08-19 18:25:30 字數 864 閱讀 8110

//十進位制數n到banse進製的轉換(遞迴版)

void convert(stack

& s,__int64_t n,int base);

if(0

//在尚有餘數之前,不斷

s.push(digit[n % base]);

convert(s,n / base ,base); //通過遞迴得到最有最高位

}}//迭代版

void convert2(stack

& s,__int64_t n,int base);

while(n > 0)

}

遞迴版採用的是分治法,但是最壞情況時間複雜度為o(n²)

//括號匹配演算法(遞迴版)

void trim(const

char

exp,int& lo,int& hi)

int divide(const

char

exp, int lo, int hi)

return mi; //若mi <= hi,合法切分點;否則,意味著區域性不可能匹配

}//檢查表示式[lo,hi]是否括號匹配(遞迴版)

bool paren(const

char

exp,int lo,int hi)

//括號匹配演算法(迭代版)

bool paren2(const

char

exp,int lo, int hi) ' :

if ((s.empty()) || ('

}return s.empty(); //棧空則匹配

}

棧的簡單應用

一 棧的簡單應用 1 數制轉換。2 括號匹配。3 逆波蘭表示式的計算。二 void hextran datatype x,datatype k 任意進製轉換 while stackempty s datatype bracketsmatch char p 括號匹配 if p stackpop s 反...

棧及其簡單應用

棧是一種特殊的線性表 是一種先進後出表 filo 只有棧頂元素才能被操作 特殊 棧具有特殊的儲存訪問結構 棧的操作 入棧 向棧中儲存資料元素 push 出棧 從棧中取出元素 pop 棧頂指標 top 用來指向最後乙個入棧元素 棧滿 上溢 不可入棧 top size 1 入棧操作 top top 1 ...

poj2082棧的簡單應用

poj2082 題目描述的真複雜 其實題意很簡單 就是輸入每個長方形的寬度和高度 可以切割的最大的長方形的面積 解題思路就是維護乙個高度遞增的乙個棧,輸入的高度大於等於棧頂元素的高度就將其壓入棧中 輸入的高度小於棧頂元素的高度就將其出棧 直到棧空或者棧頂元素的高度小於輸入元素的高度 在棧頂元素出棧的...