棧的特點: 後入先出。
stack類:
function stack()
function push(element)
function pop()
function peek()
function clear()
function length()
使用舉例:
1、數制間的相互轉換(此演算法只針對基數為2~9 的情況。)
可以利用棧將乙個數字從一種數制轉換為另一種數制。例如,將數字n轉換為以b為基數的數字,實現如下。
(1)最高位為n%b,將此位壓入棧。
(2)使用n/b代替n。
(3)重複步驟1 和2,直到n 等於0,且沒有餘數。
(4)持續將棧內元素彈出,直到棧為空,依次將這些元素排列,就得到轉換後數字的字串形式。
//將乙個數轉換為指定進製的數
function mulbase(num, base) while(num>0)
var converted = "";
while(s.length()>0)
return converted;
}
2、回文
字串完整壓入棧內後,通過持續彈出棧中的每個字母就可以得到乙個新字串,該字串剛好與原來的字串順序相反。我們只需要比較這兩個字串即可,如果它們相等,就是乙個回文。
//判斷字串是否為回文
function ispalindrome(word)
if(word === reverse)else
}
3、判斷乙個算術表示式中的括號是否匹配
//判斷算術表示式中括號是否匹配
function ismatch(expression) else
}
4、將中綴表示式轉換為字尾表示式
//將中綴表示式轉換為字尾表示式
function intopostfix(expression) ,
i = 0,
len = expression.length,
s = new stack(),//符號棧
numstack = new stack(),//數字棧
str = '',
c = '',
opera = '',
num = 0,
curop = '',
num1 = 0,
num2 = 0;
while(i < len) else
s.pop();
}else if(c === '(' || c === '+' || c === '-')else
}}else }}
i++;
}console.log(num);
return str;
}function operator(num1, num2, op)
return sum;
}console.log(intopostfix("1+3*2-7/2"));
資料結構與演算法 演算法 演算法和資料結構
資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...
資料結構 資料結構與演算法01
1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...
資料結構 資料結構與演算法02
1 演算法設計的原則 設計演算法時,通常應考慮達到以下目標 1,正確性 2,可讀性 3,健壯性 4,高效率與低儲存量需求 1,正確性 規格說明 四個層次 a,程式中不含語法錯誤 b,程式對於幾組輸入資料能夠得出滿足要求的結果 c,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...