5. Linked List
배열의 추가, 삭제의 선형 시간 소요의 단점을 보완하기 위한 자료구조
Last updated
배열의 추가, 삭제의 선형 시간 소요의 단점을 보완하기 위한 자료구조
Last updated
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class SinglyLinkedList {
constructor() {
this.head = null;
this.tail = null;
}
find(value) {
let currNode = this.head;
while (currNode.value !== value) {
currNode = currNode.next;
}
return currNode;
}
append(newValue) {
const newNode = new Node(newValue);
if (this.head === null) {
this.head = this.tail = newNode;
} else {
this.tail.next = newNode;
this.tail = newNode;
}
}
insert(node, newValue) {
const newNode = new Node(newValue);
newNode.next = node.next;
node.next = newNode;
}
remove(value) {
let prevNode = this.head;
while (prevNode.next.value !== value) {
prevNode = prevNode.next;
}
if (prevNode.next !== null) {
prevNode.next = prevNode.next.next;
}
}
display() {
let currNode = this.head;
let result = '[';
while (currNode !== null) {
result += `${currNode.value}, `;
currNode = currNode.next;
}
result = result.substr(0, result.length -2);
result += ']';
console.log(result);
}
}
const linkedList = new SinglyLinkedList();
linkedList.append(1);
linkedList.append(2);
linkedList.append(4);
linkedList.append(5);
linkedList.display(); // '[1, 2, 4, 5]'
linkedList.insert(linkedList.find(2), 3);
linkedList.remove(5);
linkedList.display(); // '[1, 2, 3, 4]'