標籤:int 修改 length bsp == class 方法 刪除 floor
前言
棧是一種遵循後進先出(LIFO)原則的有序集合,新添加的或待刪除的元素都儲存在棧的末尾,稱作棧頂,另外一端就叫棧底。在棧裡,新元素都靠近棧頂,舊元素都接近棧底。可以想象桌上的一疊書,或者廚房裡的堆放的盤子。
一、棧的建立
可以建立一個類來表示棧
//1、建立一種資料結構來儲存棧裡面的資料,這裡選擇數組//2、聲明一些棧的方法 // push(element(s)) : 添加一個或一些元素到棧頂 // pop() : 移除棧頂的元素,同時返回被移除的元素。 // peek() : 返回棧頂的元素,僅僅是返回,不做任何修改。 // isEmpty() : 如果棧裡面沒有任何元素就返回true,否者為false。 // clear() : 清除棧裡面的元素。 // size() : 返回棧裡面的個數。function Stack(){ var items = []; this.push = function(element){ items.push(element); } this.pop = function(){ return items.pop(); } this.peek = function(){ return items[items.length-1]; } this.isEmpty = function(){ return items.length == 0; } this.clear = function(){ items = []; } this.size = function(){ return items.length; } this.print = function(){ console.log(items.toString()); } }//使用棧var stack = new Stack();console.log(stack.isEmpty());//truestack.push(100);stack.push(200);console.log(stack.isEmpty());//falseconsole.log(stack.size());//2console.log(stack.peek());stack.pop();stack.print();//100
二、棧的應用
十進位轉二進位
//演算法描述:將該十進位的數和2整除,或者每次的餘數(0或1),直到結果為0位置。比圖10的二進位為: // 10/2 = 5 ,餘數 0 // 5/2 = 2 ,餘數 1 // 2/2 = 1 ,餘數 0 // 1/2 = 0 ,餘數 1 // 10的二進位表示為:0101
function diviceBy2(decNumber){ var remStack = new Stack(), rem, binaryString = ‘‘; while(decNumber > 0){ rem = Math.floor(decNumber%2); remStack.push(rem); decNumber = Math.floor(decNumber/2); } while(!remStack.isEmpty()){ binaryString += remStack.pop().toString(); } return binaryString;}console.log(diviceBy2(10)); //1010console.log(diviceBy2(520)); //1000001000console.log(diviceBy2(1000)); //1111101000
十進位轉成其他進位
function diviceByBase(decNumber, base){ var remStack = new Stack(), rem, baseString = ‘‘, digits = ‘0123456789ABCDEF‘;//8進位是餘數是(0-7)16進位是(0-9A-F) while(decNumber > 0){ rem = Math.floor(decNumber % base); remStack.push(rem); decNumber = Math.floor(decNumber / base); } while(!remStack.isEmpty()){ baseString += digits[remStack.pop()]; } return baseString;}console.log(diviceByBase(100345, 2)); // 11000011111111001console.log(diviceByBase(100345, 8)); // 303771console.log(diviceByBase(100345, 16)); // 187F9
JavaScript資料結構和演算法----棧