資料結構與演算法Javascript描述(一)棧

2021-07-10 09:58:41 字數 1619 閱讀 4602

棧的特點: 後入先出。

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,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...