//节点类
var Node = function() {
this.data = null;
this.next = null;
}
//创建链表
function createList(L, n) {
var r = L;
for (var i = 0; i < n; i++) {
var p = new Node();
p.data = i + 1;
p.next = r.next;
r.next = p;
r = p;
}
}
//遍历链表
function listOrder(L) {
var p = L.next;
while (p) {
console.log(p.data);
p = p.next;
}
}
//插入元素
function listInsert(L, i, e) {
var p = L,
j = 1;
while (p && j < i) {
p = p.next;
j++;
}
if (!p || j > i) return false;
var r = new Node();
r.data = e;
r.next = p.next;
p.next = r;
}
//根据位置获取元素
function getElem(L, i) {
var p = L.next;
j = 1;
while (p && j < i) {
p = p.next;
++j;
}
if (!p || j > i) return false;
return p.data;
}
//根据元素获取元素位置
function getLocate(L, e) {
var p = L.next,
i = 1;
while (p) {
if (p.data == e) return i;
p = p.next;
++i;
}
return false;
}
window.onload = function() {
//创建头节点,头节点data为空
var L = new Node();
createList(L, 10);
var second = getElem(L, 2);
console.log(second);
var locate = getLocate(L, 5);
console.log(locate);
listOrder(L);
listInsert(L, 11, 11);
listOrder(L);
}
JS模拟单链表
最新推荐文章于 2023-04-12 20:00:55 发布