JS資料結構與演算法(二)

2021-07-29 08:38:24 字數 3967 閱讀 6845

一些資料結構的封裝,未完待續

/**

* 棧的封裝

*/function

stack

() ;

this.pop = function

(element) ;

this.peek = function

() ;

this.size = function

() ;

this.isempty = function

() ;

this.clear = function

() ;

this.print = function

() ;

}/**

* 十進位制數轉換為二進位制數

* @param decnumber 十進位制數

* @return 二進位制數

*/function

divideby2

(decnumber)

while (decnumber > 0)

while (!mystack.isempty())

return binarystring;

}// console.log(divideby2(233));

/** * 十進位制數轉換為n(n >= 1 && n <= 16) 進製數

* @param decnumber 十進位制數

* @param base n進製

* @return n進製數

*/function

baseconverter

(decnumber, base)

while (decnumber > 0)

while (!mystack.isempty())

return resstring;

}// console.log(baseconverter(100345, 8));

/** * 佇列分裝

*/function

queue

() ;

this.dequeue = function

(element) ;

this.front = function

() ;

this.size = function

() ;

this.isempty = function

() ;

this.clear = function

() ;

this.print = function

() ;

}var myqueue = new queue();

// console.log(myqueue.isempty());

/** * 優先佇列,權重越小越優先

*/function

priorityqueue

() this.enqueue = function

(element) ;

this.dequeue = function

(element) ;

this.front = function

() ;

this.size = function

() ;

this.isempty = function

() ;

this.clear = function

() ;

this.print = function

() ;

this.enqueue = function

(element, priority) else

}if (!isadd) }};

}// var priorityqueue = new priorityqueue();

// priorityqueue.enqueue('john', 2);

// priorityqueue.enqueue('jack', 1);

// priorityqueue.enqueue('cam', 1);

// priorityqueue.print();

// /**

* 集合封裝

*/function

set() ,

length = 0;

this.has = function

( ) ;

this.add = function

(value) else

};this.remove = function

(value) else

};this.clear = function

() ;

};this.size = function

() ;

this.values = function

() return keys;

};this.print = function

() ;

this.getunion = function

(otherset)

return unionset;

};this.getintersection = function

(otherset)

}return intersectionset;

};this.getdifference = function

(otherset)

}return differenceset;

};this.issubset = function

(otherset)

}return subsetflag ? true : false;

};}// var seta = new set();

// seta.add(1);

// seta.add(2);

// seta.add(3);

// var setb = new set();

// setb.add(4);

// setb.add(2);

// setb.add(3);

// var setunionab = seta.getunion(setb);

// setunionab.print();

// var setinsersectionab = seta.getintersection(setb);

// setinsersectionab.print();

// var setdifferenceab = seta.getdifference(setb);

// setdifferenceab.print();

// console.log(setb.issubset(seta));

/** * map封裝

*/function

map() ,

length = 0;

this.has = function

(key) ;

this.set = function

(key, valus) ;

this.get = function

(key) ;

this.values = function

() }

return values;

};this.keys = function

() }

return keys;

};this.remove = function

(key) else

};this.clear = function

() ;

};this.size = function

() ;

this.getitems = function

() ;

this.print = function

() ;

}

資料結構與演算法二

資料結構作為一門學科主要研究資料的各種邏輯結構和儲存結構,以及對資料的各種操作。因此,主要有三個方面的內容 資料的邏輯結構 資料的物理儲存結構 對資料的操作 或演算法 通常,演算法的設計取決於資料的邏輯結構,演算法的實現取決於資料的物理儲存結構。邏輯結構 是指資料物件中資料元素之間的相互關係。其實這...

資料結構與演算法(二)

函式的漸近增長 給定兩個函式 f n 和 g n 如果存在乙個整數n,使得對於所有的n n,f n 總是比g n 大,那麼我們說f n 的增長漸近快於g n 如圖 演算法時間複雜度的定義 在進行時間演算法分析時,語句總的執行次數t n 是關於問題規模n的函式,進而分析t n 隨n的變化情況並確定t ...

資料結構與演算法 二

佇列是一種特殊的線性表 線性結構 特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列按照邏輯資料結構可以分為順序佇列和迴圈佇列....