JavaScript数据结构-列表
应用场景:购物清单
不包含任何元素的列表称为空列表
列表的完整抽象数据类型定义:
listSize( 属性) | 列表的元素个数 |
pos(属性) | 列表的当前位置 |
length(属性) | 返回列表中元素的个数 |
clear(方法) | 清空列表中的所有元素 |
toString(方法) | 返回列表的字符串形式 |
getElement(方法) | 返回当前位置的元素 |
insert(方法) | 在现有元素后插入新元素 |
append(方法) | 在列表的末尾添加新元素 |
remove(方法) | 从列表中删除元素 |
front(方法) | 将列表的当前位置设移动到第一个元素 |
end(方法) | 将列表的当前位置移动到最后一个元素 |
prev(方法) | 将当前位置后移一位 |
next(方法) | 将当前位置前移一位 |
currPos(方法) | 返回列表的当前位置 |
moveTo(方法) | 将当前位置移动到指定位置 |
function List() { this.listSize = 0; this.append = append; this.remove = remove; this.pos = 0; this.dataStore = []; this.find = find; this.toString = toString; this.length = length; this.clear = clear; this.insert = insert; this.front = front; this.end = end; this.prev = prev; this.next = next; this.currPos = currPos; this.moveTo = moveTo; this.getElement = getElement; this.contains = contains; } function append(element) { this.dataStore[this.listSize++] = element; } function find(element) { var dataStore = this.dataStore; for(var i = 0, len = dataStore.length; i < len; i++) { if(dataStore[i] == element) { return i; } } return -1; } function remove(element) { var fountAt = this.find(element); if(fountAt > -1) { this.dataStore.splice(fountAt, 1); --this.listSize; return true; } return false; } function length() { return this.listSize; } function toString() { return this.dataStore; } function clear() { delete this.dataStore; this.dataStore = []; this.listSize = this.pos = 0; } 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 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 - 1) {++this.pos; } } function currPos() { return this.pos; } function moveTo(position) { this.pos = position; } function getElement() { return this.dataStore[this.pos]; } function contains(element) { var dataStore = this.dataStore; for(var i = 0, len = dataStore.length; i < len; i++) { if(dataStore[i] == element) { return true; } } return false; } var names = new List(); names.append("1"); names.append("2"); names.append("3"); names.append("4"); names.append("5"); names.append("6"); names.insert("7", "6"); names.prev(); console.log(names.contains("7"));
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。