第四章棧(1)

2021-08-21 04:27:06 字數 2315 閱讀 3957

function stack()

function push(element)

function pop()

function peek()

function length()

function clear()

function isempty()else

}//測試stack類的實現

let s=new stack();

s.push("tom");

s.push("jack");

s.push("bryan");

console.log("length: " + s.length());//3

console.log(s.peek());//bryan

let popped = s.pop();

console.log("the popped element is: " + popped);//bryan

console.log(s.peek());//jack

s.push("cynthia");

console.log(s.peek());//cynthia

s.clear();

console.log("length: " + s.length());//0

console.log(s.peek());//undefined

s.push("clayton");

console.log(s.peek());//clayton

1.數制間的相互轉換:假設想將數字n轉換為以b為基數的數字,實現轉換的演算法如下

(1) 最高位為 n % b,將此位壓入棧

(2) 使用 n/b代替n

(3) 重複步驟1 和 2,直到 n 等於 0,且沒有餘數。

(4) 持續將棧內元素彈出,直到棧為空,依次將這些元素排列,就得到轉換後數字的字串形式

function mulbase(num,base)while(num>0);

let converted="";

while(s.length()>0)

return converted;

}let num=31;

let base=2;

let newnum=mulbase(num,base);

console.log(num+" converted to base "+base+" is "+newnum);//11111

num =125;

base=8;

newnum=mulbase(num,base);

console.log(num+" converted to base "+base+" is "+newnum);//175

2.判斷給定字串是否是回文

function ispalindrome(word)

if(word==rword)else

}let word="hello";

if(ispalindrome(word))else

word='racecar';

if(ispalindrome(word))else

3.遞迴

function factorial(n)else

}function fact(n)

let product=1;

while(s.length()>0)

return product;

}console.log(factorial(6));//720

console.log(fact(6));//720

1.棧可以用來判斷乙個算術表示式中的括號是否匹配。編寫乙個函式,該函式接受乙個算術表示式作為引數,返回括號缺失的位置。下面是乙個括號不匹配的算術表示式的例子:2.3 + 23 / 12 + (3.14159×0.24。
function signup(stack,ele)":

case "]":

case ")":

let topele=stack.pop();

console.log(stack.top);

if((topele=='')||(topele=='['&& ele==']')||(topele=='('&& ele==')'))else

break;

} }let stack=new stack();

let str="2.3 + 23 / 12 + ( 3.14159 × 0.24 ";

str=str.split(" ");

for(let i=0;i

第四章棧(3)

3.現實生活中棧的乙個例子是佩茲糖果盒。想象一下你有一盒佩茲糖果,裡面塞滿了紅色 黃色和白色的糖果,但是你不喜歡黃色的糖果。使用棧 有可能用到多個棧 寫一段程式,在不改變盒內其他糖果疊放順序的基礎上,將黃色糖果移出。let candybox new stack candybox.push red c...

第四章 棧與佇列

adt abstract data type 棧 stack data 同線性表,元素具有相同的型別,相鄰元素具有前驅和後繼關係。operation initstack s 初始化操作,建立乙個空棧s。destroy s 若棧存在,則銷毀它 clearstack s 將棧清空 stackempty ...

第四章 WCF繫結 1

size large color red 原文 url size x large color orange 繫結和通道棧 color size 在wcf中,所有的通訊細節都是通過通道來處理的,它是通道元件組成的棧,所有的訊息都會在執行時傳輸。最底層的元件是傳輸通道。它實現了乙個給定的傳輸協議,並且從...