javascript实现数据结构中的列表结构
- 定义构造列表的函数
function List() { this.listSize = 0; 列表的元素个数 this.pos = 0; 列表的当前位置 this.dataStore = []; 列表数组 this.append = append; 列表的末尾添加新元素 this.find = find; 找到指定元素的位置 this.toString = toString; 返回列表的字符串形式 this.insert = insert; 在现有元素后插入新元素 this.remove = remove; 从列表中删除元素 this.clear = clear; 清空列表中的所有元素 this.front = front; 将列表的当前位置移到第一个元素 this.end = end; 将列表的当前位置移到最后一个元素 this.next = next; 将当前位置后移一位 this.hasNext; 判断是否有后一位 this.hasPrev; 判断是否有前一位 this.length = length; 返回列表元素的个数 this.currPos = currPos; 返回列表的当前位置 this.moveTo = moveTo; 将列表的当前位置移动到指定位置 this.getElement = getElement; 返回当前位置的元素 this.contains = contains; 判断给定元素是否在列表中 }
- 实现元素插入函数
function append(element) { this.dataStore[this.listSize++] = element; }
- 找到元素函数
function find(element) { for (let i = 0; i < this.listSize; i++) { console.log(i); if (element == this.dataStore[i]) { return i; } } return -1; }
- 删除列表中的某个元素
function remove(element) { let findAt = this.find(element); if (findAt > -1) { this.dataStore.splice(findAt, 1); --this.listSize; return true; } }
- 获得列表的长度
function length() { return this.listSize; }
- 返回列表的字符串类型数据
function toString() { return this.dataStore; }
- 在列表中指定元素后插入元素
function insert(element, after) { let insertAt = this.find(after); if (insertAt > -1) { this.dataStore.splice(insertAt + 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 (let i = 0; i < this.listSize; 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 - 1) { this.pos++; } }
当前的位置
function currPos() {
return this.pos;
}
- 移动到指定位置
function moveTo(position) { if (position < this.listSize - 1) { this.pos = position; } }
- 获得当前位置的元素
function getElement() { return this.dataStore[this.pos]; }
- 是否有下一个元素
function hasNext() { return this.pos < this.listSize - 1; }
- 是否有上一个元素
function hasPrev() { return this.pos > 0; } //初始化一个列表 let list = new List(); list.append('jianguang'); list.append('yinjun'); list.append('jiangsssuang'); list.append('yinssjun'); 移动到第一个元素位置并且显示 list.front(); print(list.getElement()); 移动向前一个元素位置,并且显示 list.next(); print(list.getElement());
还可以测试列表的其他数据来通过列表实现想要的效果
欢迎评论以及留言,同时欢迎关注我的博客定时不断地更新我的文章 陈建光的博客
相关推荐
chensen 2020-11-14
lwnylslwnyls 2020-11-06
ATenhong 2020-10-15
yanzhelee 2020-10-13
佛系程序员J 2020-10-10
guojin0 2020-10-08
佛系程序员J 2020-10-08
bluewelkin 2020-09-16
wwzaqw 2020-09-04
zhongdaowendao 2020-09-02
favouriter 2020-08-18
奎因amp华洛 2020-08-15
一青年 2020-08-13
千锋 2020-08-10
nangongyanya 2020-08-09
dongxurr 2020-08-08
明天你好 2020-08-03
kyelu 2020-08-03
Ashes 2020-08-03