??? 本來打算是從C語言的數(shù)據(jù)結(jié)構(gòu)學起的患雇,但是由于對C語言遺忘過多跃脊,于是作罷,開始轉(zhuǎn)向Python 數(shù)據(jù)結(jié)構(gòu)算法了苛吱。而且在未來大數(shù)據(jù)處理中酪术,Python語言會展現(xiàn)得天獨厚優(yōu)勢呢——獨白
棧【stack】: 是數(shù)據(jù)結(jié)構(gòu)的一種翠储,若是對棧中的元素訪問绘雁,必須從棧頂開始,是一種后進先出的數(shù)據(jù)結(jié)構(gòu)彰亥。所以咧七,任何不在棧頂?shù)脑囟紵o法訪問,為了得到棧底元素任斋,必須著個拿掉棧頂元素
在python 中對棧的操作有兩個 壓棧(push)和彈棧(pop)這兩個都是Python中的內(nèi)置函數(shù)pop()還有一個常見的操作是預(yù)覽棧頂元素耻涛。peek() 方法只能返回棧頂原素,而不能刪除它卓研。
為了記錄棧頂元素的位置奏赘,同時為了標記哪里可以加入新元素。梁只。我們使用top,當向棧內(nèi)壓入元素,該變量增大旁壮,彈出元素抡谐,變量減小桐猬。
stack的通常操作
Stack(): 建立一個空的棧對象
push() :把一個元素添加到棧頂
pop(): 刪除最頂層溃肪,并返回這個元素
peek() : 返回最頂層,但不刪除它
isEmpty()? : 判斷棧是否為空
size() : 返回棧中的元素
eg 1: 棧的應(yīng)用之平衡圓括號
比如我們在計算機輸入(9+1)X(2+8)/(3+7)
棧的應(yīng)用進制轉(zhuǎn)換
在計算機中進制之間的轉(zhuǎn)換從未停止坚嗜,大都是十進制1二進制之間的轉(zhuǎn)換
十進制轉(zhuǎn)換二進制?? ----- 除二取余法
這種算法從一個大于 0 的整數(shù)開始苍蔬,通過遞歸法連續(xù)除以 2碟绑,并保存除 2 得到的余數(shù)茎匠。第一次除以 2 可以判斷這個數(shù)是偶數(shù)還是奇數(shù)诵冒。偶數(shù)除以 2 的余數(shù)是 0,這個二進制位就 0;奇數(shù)除以 2 的余數(shù)是 1惭蟋,這個位就是 1。這樣連續(xù)相除得到一串的 0 或 1药磺,第 1 次得到的位實際是最后一位。如圖 5 所示癌佩,我們又一次見到了需要反轉(zhuǎn)順序的性質(zhì),這就表明需要利用棧的特性來解決問題了围辙。
Python代碼