숙제 : LinkedList로 Stack, Queue 구현하기
178
yeolan
작성한 질문수 4
0
queue : enqueue, dequeue, peek
class Node {
prev = null;
next = null;
constructor(value) {
this.value = value;
}
}
class Queue {
length = 0;
head = null;
tail = null;
enqueue(value) {
// stack.push와 동일
const newNode = new Node(value);
if (this.length == 0) {
this.head = newNode;
this.tail = newNode;
} else {
newNode.prev = this.tail;
this.tail.next = newNode;
this.tail = newNode;
}
this.length++;
return this.length;
}
dequeue() {
let rslt;
// head.next의 prev를 null로 설정 & head 업데이트
if (this.length > 0) {
if (this.length == 1) {
rslt = this.head.value;
this.head = null;
this.tail = null;
} else {
rslt = this.head.value;
this.head.next.prev = null;
this.head = this.head.next;
}
this.length--;
}
return rslt;
}
peek() {
return this.head?.value;
}
get length() {
return this.length;
}
}
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(3);
queue.enqueue(5);
queue.enqueue(4);
queue.enqueue(2);
console.log(queue.length); // 5
console.log(queue.dequeue()); // 1
console.log(queue.length); // 4
console.log(queue.peek()); // 3
console.log(queue.dequeue()); // 3
console.log(queue.peek()); // 5
console.log(queue.dequeue()); // 5
console.log(queue.peek()); // 4
console.log(queue.dequeue()); // 4
console.log(queue.dequeue()); // 2
console.log(queue.length); // 0
console.log(queue.dequeue()); // undefined
console.log(queue.peek()); // undefined
stack : push, pop, top
class Node {
prev = null;
next = null;
constructor(value) {
this.value = value;
}
}
class Stack {
length = 0;
head = null;
tail = null;
push(value) {
// 비어있으면 head = tail = newNode
// 그 외엔 tail에다 추가 후 tail 업데이트
const newNode = new Node(value);
if (this.length == 0) {
this.head = newNode;
this.tail = newNode;
} else {
newNode.prev = this.tail;
this.tail.next = newNode;
this.tail = newNode;
}
this.length++;
return this.length;
}
pop() {
// tail.prev를 tail로 업데이트
// 비어있거나 하나만 있으면 undefined 반환
let rslt = this.tail?.value;
this.tail = !this.tail ? null : this.tail.prev;
this.length = this.length - 1 < 0 ? 0 : this.length - 1;
return rslt;
}
top() {
return this.tail?.value;
}
get length() {
return this.length;
}
}
const stack = new Stack();
stack.push(1);
stack.push(3);
stack.push(5);
stack.push(4);
stack.push(2);
console.log(stack.length); // 5
console.log(stack.pop()); // 2
console.log(stack.length); // 4
console.log(stack.top()); // 4
console.log(stack.pop()); // 4
console.log(stack.top()); // 5
console.log(stack.pop()); // 5
console.log(stack.top()); // 3
console.log(stack.pop()); // 3
console.log(stack.pop()); // 1
console.log(stack.length); // 0
console.log(stack.pop()); // undefined
console.log(stack.top()); // undefined
답변 1
섹션2퀴즈는어디있나요?
0
7
0
연결리스트 삽입삭제 O(1) 아닌가요?
0
10
2
GROUP BY, HAVING 실습 1번문제
1
14
2
4 - A
0
21
2
스택, 큐 연결리스트로 구현 과제 완료입니다!
0
95
1
heapify 안의 bigger 삼항연산자 질문
0
121
2
LinkedList로 스택, 큐 구현하기 숙제
0
126
1
linkedList prev와 tail 사용 후 o(1) 구현.
0
165
1
연결리스트 숙제
0
242
1
한번에 이해 안가는 제가 비정상 일까요...?
0
237
1
우선순위 큐 질문이 있습니다!
0
155
1
[숙제] minHeap 구현, maxHeap -> minHeap , minHeap -> maxHeap
1
236
1
최소힙 remove 구현하기
0
247
1
숙제 최소힙 만들기
0
153
1
숙제 length return 하기
0
195
1
숙제 : 같은 값을 넣은경우 에러 처리
0
184
1
영상 중간에 0:10 1:23초 수정에 따른 코드 최종본
1
145
1
숙제2 연결리스트를 이용하여 큐 구현하기
0
241
1
숙제1 LinkedList로 스택 구현하기
1
253
1
연결 리스트 구현 숙제 리뷰 부탁드려봅니다
1
346
2
let current = this.head 질문 있습니다!
0
254
1
퀴즈 답안
0
471
1
최소힙의 결과값과 최대힙->최소힙 결과값이 다른게 맞나요?
0
249
1
1주차 숙제에 대한 해답 코드는 따로 제공되지 않나요??
0
499
1





