演算法系列 逆置乙個棧

2021-08-07 18:37:50 字數 583 閱讀 1837

乙個棧一次壓入了1、2、3、4、5,那麼從棧頂到棧底分別為5、4、3、2、1.將這個棧轉置後,從棧頂到棧底為1、2、3、4、5,

生成乙個輔助棧,依次從原來棧中彈出壓入輔助棧中,返回最後結果。

不利用輔助棧,遞迴呼叫取得棧底元素的子函式然後將其壓入原有棧中。空間複雜度為o(1),時間複雜度為o(n)

public

class

solution

return res;

}/**

* 逆置乙個棧,o(n)時間,o(1)空間

**@param stack

*@return

*/public stackreversestack1(stackstack)

/*** 取得棧底元素

**@param stack

*@return

*/private

intgetandremovebottomelement(stackstack)

public

static

void

main(string args)

}

用棧逆置乙個線性表

include include define stack init size100 define stackincrement10 typedef struct lnodelnode,linklist typedef structsqstack void initlist linklist l vo...

資料結構與演算法系列 棧 順序棧

棧的定義 棧又稱堆疊,是一種特殊的線性表 限制 先進後出 允許插入和刪除的一端叫做變化的一端 稱為棧頂,棧頂元素 棧底。比如把子彈壓入彈夾,裡面的子彈就是先進後出。棧的順序儲存結構 簡稱順序棧,它是利用一組位址連續的儲存單元依次存放自棧底到棧頂的資料元素。順序棧的定義及相關操作。include de...

演算法系列一 霍夫曼壓縮

既然是從霍夫曼壓縮入手的,就先來看看它是個什麼東西 一種壓縮演算法,用較少的位元表示出現頻率高的字元,用較多的位元表示出現頻率低的字元。它的大致過程是這樣的 假設壓縮 beep boop beer 計算字元頻次,由小到大排序,得到priority queue 字元次數 r 1 1 p 2 o 2 2...