JavaScript實現列表類
阿新 • • 發佈:2019-02-10
list是處理一組有序專案的資料結構,即你可以在一個列表中儲存一個 序列 的專案。可以從列表的任何位置取出元素、插入元素。在JavaScript中這樣實現:
<script> function List() { this.listSize = 0; this.pos = 0; this.dataStore = []; // 初始化一個空陣列來儲存列表元素 this.clear = clear; this.find = find; this.toString = toString; this.insert = insert; this.append = append; this.remove = remove; this.front = front; this.end = end; this.prev = prev; this.next = next; this.length = length; this.currPos = currPos; this.moveTo = moveTo; this.getElement = getElement; this.length = length; this.contains = contains; } function append(element) { this.dataStore[this.listSize++] = element; } function find(element) { for (var i = 0; i < this.dataStore.length; ++i) { if (this.dataStore[i] == element) { return i; } } return -1; } function remove(element) { var foundAt = this.find(element); if (foundAt > -1) { this.dataStore.splice(foundAt,1); --this.listSize; return true; } return false; } function length() { return this.listSize; } function toString() { return this.dataStore; } function insert(element, after) { var insertPos = this.find(after); if (insertPos > -1) { this.dataStore.splice(insertPos+1, 0, element); ++this.listSize; return true; } return false; } function clear() { delete this.dataStore; this.dataStore = []; this.listSize = this.pos = 0; } function contains(element) { for (var i = 0; i < this.dataStore.length; ++i) { if (this.dataStore[i] == element) { return true; } } return false; } function front() { this.pos = 0; } function end() { this.pos = this.listSize-1; } function prev() { if (this.pos >= 0) { --this.pos; } } function next() { if (this.pos < this.listSize) { ++this.pos; } } function currPos() { return this.pos; } function moveTo(position) { this.pos = position; } function getElement() { return this.dataStore[this.pos]; } //例項 var names = new List(); names.append("Cynthia"); names.append("Raymond"); names.append("Barbara"); for(names.front(); names.currPos() < names.length(); names.next()) { console.log(names.getElement()); } for(names.end(); names.currPos() >= 0; names.prev()) { console.log(names.getElement()); } </script>