Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 주짓떼로
- 하프가드
- 웹개발
- 디자인패턴
- web
- 노드
- 주짓수
- Redux
- Node
- 엄티로드
- 클로즈가드
- 개발자
- 영화감상
- 영화리뷰
- Express
- 자바스크립트
- 프로그래밍
- 파이썬
- 드릴
- git
- nodejs
- development
- graphQL
- 솔로드릴
- JavaScript
- 리액트
- 영화
- 개발
- 주짓떼라
- REACT
Archives
- Today
- Total
As i wish
[2019.07.07] 매일 프로그래밍(이중 연결 리스트) 본문
이중 연결 리스트 (Doubly linked list)를 구현하시오.
- add(value): 주어진 value를 리스트 처음 노드로 등록.
- search(value): value 를 가진 노드를 리턴.
- remove(node): 주어진 노드를 연결 리스트에서 제거.
<html>
<body>
<script>
(function main() {
// 이중 연결 리스트 (Doubly linked list)를 구현하시오.
// add(value): 주어진 value를 리스트 처음 노드로 등록.
// search(value): value 를 가진 노드를 리턴.
// remove(node): 주어진 노드를 연결 리스트에서 제거.
class Node {
constructor(data) {
this.data = data;
this.next = null;
this.prev = null;
}
}
class DoublyLinkedList {
constructor() {
this.head = null;
this.tail = null;
}
append(value) {
let node = new Node(value);
if (!this.head) {
this.head = node;
this.tail = node;
} else {
node.prev = this.tail;
this.tail.next = node;
this.tail = node;
}
}
search(value) {
let current = this.head;
while(!!current) {
if (current.data === value) {
break;
} else {
current = current.next;
}
}
return current;
}
remove(node) {
let current = this.head;
let nodeVal = node.data;
while(!!current) {
if (current.data === nodeVal) {
let currentPrevNode = current.prev,
currentNextNode = current.next;
if (current.data === this.head.data) {
currentNextNode.prev = currentPrevNode;
this.head = currentNextNode;
} else if (current.data === this.tail.data) {
currentPrevNode.next = currentNextNode;
this.tail = currentPrevNode;
} else {
currentPrevNode.next = currentNextNode;
currentNextNode.prev = currentPrevNode;
}
break;
} else {
current = current.next;
}
}
}
print() {
let current = this.head;
while(!!current) {
console.log(current);
current = current.next;
}
}
};
const doublyLinkedList = new DoublyLinkedList();
doublyLinkedList.append('first');
doublyLinkedList.append('second');
doublyLinkedList.append('third');
doublyLinkedList.append('fourth');
let searched = doublyLinkedList.search('fourth');
console.log('Searched: ', searched);
doublyLinkedList.remove({data: 'fourth'});
doublyLinkedList.print();
})();
</script>
</body>
</html>
'Algorithm' 카테고리의 다른 글
어떠한 배열을 입력하면, 이 배열이 정렬된 배열로 부터 (push , pop)을 사용하여 만들어 질 수 있는지에 대한 문제 (0) | 2020.01.12 |
---|
Comments