用来声明插入链表中元素的构造。
function Node(ele){//定义链表中的一个元素
this.ele = ele;//值
this.next = null;//用来指向下一个节点的指针
}
定义链表及其方法
function LinkList(){//定义链表
let length = 0;
let head = null;
//链表方法
this.append = append;//向链表尾部添加元素
this.insert = insert;//向指定位置插入元素
}
向链表尾部添加元素
function append(element){
let node = new Node(element);
let current;
if(this.head == null){ //链表为空时
this.head = node;
}else{
current = this.head;
while(current.next){
current = current.next; //通过循环得到最后一个元素
}
current.next = node; //将随后一个元素的指针指向要插入的node
}
length++;
}
向指定位置插入元素
function insert(position, element){
if(position > length || position < 0 ){
return false;
}
let node = new Node(element);
let current = this.head;
let index = 0;
let previous;
if(position == 0){ //若在第一个位置添加
node.next = current;
this.head = node;
}else{
while(index++ < position){
previous = current;
current = current.next;
}//找出要插入的位置previous 以及current 分别代表所插入元素位置的一前一后
node.next = current;
previous.next = node;
}
length++;
return true;
}
输出该链表
function toString( list ){
let current = list.head;
let str = '';
while(current){
str += current.element;
current = current.next;
}
return str;
}
let list = new LinkedList();
list.append(11);
list.append(22);
console.log(toString(list));