標籤:splice .data 移除 rev 索引 efault 類型 end struct
js 實現List
列表是一組有序的資料。每個列表中的資料項目稱為元素。在 JavaScript 中,列表中的元素可以是任意資料類型。
我們可以根據數組的特性來實現List。
List 抽象資料類型定義
- listSize(屬性) 列表的元素個數
- pos(屬性) 列表的當前位置
- length(屬性) 返回列表中元素的個數
- clear(方法) 清空列表中的所有元素
- toString(方法) 返回列表的字串形式
- getElement(方法) 返回當前位置的元素
- insert(方法) 在現有元素後插入新元素
- append(方法) 在列表的末尾添加新元素
- remove(方法) 從列表中刪除元素
- front(方法) 將列表的當前位置設移動到第一個元素
- end(方法) 將列表的當前位置移動到最後一個元素
- prev(方法) 將當前位置前移一位
- next(方法) 將當前位置後移一位
- currPos(方法) 返回列表的當前位置
- moveTo(方法) 將當前位置移動到指定位置
實現
class List{ constructor() { this.dataSouce = []; this.listSize = 0; // 列表的大小 this.pos = 0; // 列表中當前的位置 } /** * 在列表的末尾添加新元素 * @param {*} element 要添加的元素 */ append(element) { this.dataSouce[this.listSize++] = element; } /** * 在列表中插入一個元素 * @param {*} element * @param {*} after */ insert(element) { this.dataSouce.push(element); this.listSize++; } /** * 在列表中移除一個元素 * @param {*} element 要刪除的元素 */ remove(element) { // 尋找當前元素的索引 const index = this.dataSouce.indexOf(element); if (index >= 0) { this.dataSouce.splice(index, 1); this.listSize--; return true; } return false; } /** * 判斷給定的值是否在列表中 */ contains(element) { return this.dataSouce.indexOf(element) > -1; } /** * 將列表的當前位置設移動到第一個元素 */ front() { this.pos = 0; } /** * 將列表的當前位置移動到最後一個元素 */ end() { this.pos = this.listSize - 1; } /** * 將當前位置前移一位 */ prev() { if (this.pos > 0) { --this.pos; } } /** * 將當前位置向後移一位 */ next() { if (this.pos <= (this.listSize - 1)) { ++this.pos; } } /** * 返回列表的當前位置 */ currPos() { return this.pos; } /** * 將當前位置移動到指定位置 * @param {*} position */ moveTo(position) { this.pos = position; } /** * 返回當前位置的元素 */ getElement() { return this.dataSouce[this.pos]; } /** * 清楚列表中的元素 */ clear() { delete this.dataSouce; this.dataSouce = []; tihs.listSize = 0; this.pos = 0; } /** * 列表的長度 */ length() { return this.listSize; } /** * 顯示當前列表的元素 */ toString() { return this.dataSouce; }}export default List;
js 實現List