js实现链表结构以及常见操作
一、构建Node类
通过Node构造函数new的实例表示一个节点,它包含两个属性:
- element属性用来保存节点上的数据
- next属性用来保存所指向的节点的地址
// 定义Node类
function Node(element) {
this.element = element;
this.next = null;
}
二、构建List类
定义header属性作为一个链表的头节点,并定义insert(),find()等实例方法
// 定义List类
function List() {
this.header = new Node("header");
}
1.定义find(ele)方法
这个方法接收一个参数:ele要查找的节点的值。遍历链表查找是否存在ele值的节点,若存在则返回对应节点,否则返回-1
// 查找指定节点
this.find = function (ele) {
let curNode = this.header;
while (curNode) {
if (curNode.element === ele) {
return curNode;
break;
} else {
curNode = curNode.next;
}
}
return -1;
}
2.定义insert(preEle, newEle)方法
这个方法接收两个参数:preEle插入位置节点的值和newEle新节点的值。通过find方法找到插入位置节点preNode,新建一个值为newEle的节点newNode,将newNode节点指向preNode节点的后一个节点,将preNode节点指向newNode节点,实现新节点插入到preNode节点后
// 定义插入方法
this.insert = function (preEle, newEle) {
let preNode = this.find(preEle);
let newNode = new Node(newEle);
newNode.next = preNode.next;
preNode.next = newNode;
}
3.定义showAllEle ()方法
遍历链表将所有节点的值放入一个数组中返回
// 输出所有节点的值
this.