오늘은 유투브를 보았다.
조금 개념을 잡기가 힘들었다.
MOUNT DEV
https://www.youtube.com/watch?v=ZBdE8DElQQU
const n1 = {
data: 100,
};
const n2 = {
data: 200,
};
n1.next = n2;
console.log(n1);
class Node {
constructor(data, next = null) {
this.data = data;
this.next = next;
}
}
class LinkedList {
constructor() {
this.head = null;
this.size = 0;
}
///Insert first node
insertFirst(data) {
this.head = new Node(data, this.head);
this.size++;
}
/// Insert last node
insertLast(data) {
let node = new Node(data);
let current;
// if empty. make head
if (!this.head) {
this.head = node;
} else {
current = this.head;
while (current.next) {
current = current.next;
}
current.next = node;
}
this.size++;
}
//If first index
insertAt(data, index) {
//If index is out of range
if (index > 0 && index > this.size) {
return;
}
// If first index
if (index === 0) {
this.head = new Node(data, this.head);
return;
}
const node = new Node(data);
let current, previous;
// Set current to first
current = this.head;
let count = 0;
while (count < index) {
previous = current; // Node before index
count++;
current = current.next; /// Node after index
}
node.next = current;
previous.next = node;
this.size++;
}
// Get at index
getAt(index) {
let current = this.head;
let count = 0;
while (current) {
if (count === index) {
console.log(current.data);
}
count++;
current = current.next;
}
return null;
}
// Remove at index
removeAt(index) {
if(index >0 && index > this.size) {
return;
}
let current = this.head;
let previous;
let count = 0;
//Remove first
if(index ===0) {
this.head = current.next;
}else {
while(count < index) {
count++;
previous = current;
current = current.next;
}
previous.next = current.next;
}
this.size--;
}
// Clear list
clearList() {
this.head = null;
this.size = 0;
}
// Print list data
printListData() {
let current = this.head;
while (current) {
console.log(current.data);
current = current.next;
}
}
}
const ll = new LinkedList();
ll.insertFirst(100);
console.log(ll);
ll.insertFirst(200);
console.log(ll);
ll.insertFirst(300);
console.log(ll);
ll.insertLast(400);
console.log(ll);
ll.insertAt(500, 1);
console.log(ll);
ll.removeAt(2)
// ll.printListData();
console.log(ll)
ll.getAt();
{ data: 100, next: { data: 200 } }
LinkedList { head: Node { data: 100, next: null }, size: 1 }
LinkedList {
head: Node { data: 200, next: Node { data: 100, next: null } },
size: 2
}
LinkedList {
head: Node { data: 300, next: Node { data: 200, next: [Node] } },
size: 3
}
LinkedList {
head: Node { data: 300, next: Node { data: 200, next: [Node] } },
size: 4
}
LinkedList {
head: Node { data: 300, next: Node { data: 500, next: [Node] } },
size: 5
}
200