1、单项循环链表:
class Cnode {
constructor(data) {
this.data = data;
this.next = null;
}
}
class CycleLinkList {
constructor() {
this.head = null;
this.len = 0
}
// 1.向链表最后添加元素
append(ele) {
let newnode = new Cnode(ele);
if (this.head == null) { //空链表
this.head = newnode;
newnode.next = this.head;
} else { //非空链表
// 需要找到最后一个节点 最后一个节点.next指向头节点
let current = this.head;
while (current.next != this.head) {
//继续往下找
current = current.next;
}
// 找到了,cuurent表示最后一个节点
current.next = newnode;
newnode.next = this.head;
}
this.len++
}
// 2.向链表中插入元素
insert(position, ele) {
if (position < 0 || position > this.len || !Number.isInteger(position)) return
let newnode = new Cnode(ele);
let current = this.head,
index = 0;
if (position == 0) {
if (this.len == 0) {
this.head = newnode;
newnode.next = this.head;
} else {
while (current.next != this.head) {
current = current.next;
}
newnode.next = this.head;
current.next = newnode;
this.head = newnode;
}
this.len++
} else if (position == this.len) {