목록자바스크립트 알고리즘 (4)
에르노트
자바스크립트는 기본적으로 집합(Set) 클래스를 지원한다. Set The Set object lets you store unique values of any type, whether primitive values or object references. developer.mozilla.org 자바스크립트에서 집합(Set)이란 중학교 때 처음 배우는 바로 그 집합 개념이다. 이를 일반화해서 얘기하면 유한하고 구분되는 항목들의 그룹이라고 표현할 수 있다. 좀 더 엄밀히 얘기하자면 중복을 허용하지 않고 정렬되지 않은 항목들을 그룹이다. 따라서 정의에 맞게 그 용도 역시 항목의 유일성을 확인하는 것이다. 생성 let set1 = new Set([1,2,3]) let set2 = new Set('123') cons..
연결 리스트(Linkd List)를 확장하여 양방향으로 링크가 구성되는 이중 연결 리스트를 만들 수 있다. 단일 연결 리스트의 노드가 next 포인터만을 가졌다면 이중 연결 리스트의 노드는 prev와 next 두 개의 포인터를 갖는다. class LinkedListNode{ constructor(data){ this.data = data this.prev = null this.next = null } }그리고 DoublyLinkedList 클래스 자체도 head와 더불어 tail을 추가 멤버로 가진다.class DoublyLinkedList{ constructor(){ this.head = null this.tail = null this.size = 0 } isEmpty(){ return this.siz..
연결 리스트 연결리스트(Linked List)는 각 노드의 연결을 통해 리스트를 구현한 것이다. 자바스크립트 배열은 가변적이지만 C나 C++ 등의 전통적 언어에서 배열은 고정된 크기를 갖는 것이 일반적이다. 따라서 배열 대신 연결 리스트를 이용하면 실행 시간에 동적으로 메모리를 할당하고 해제할 수 있다는 장점이 있다. 생성 class LinkedListNode{ constructor(value){ this.data = value this.next = null } } class LinkedList{ constructor(){ this.head = null this.size = 0 } isEmpty(){ return this.size == 0 } } 리스트와 리스트에 담길 노드에 해당하는 클래스를 하나씩 만..
스택(Stack) 스택은 마지막에 삽입된 항목만 제거할 수 있는 자료구조이다. 그래서 후입선출, Last In First Out(LIFO) 방식의 자료구조라고 일컬어진다. 그리고 자바스크립트 배열은 이러한 스택의 특성을 그대로 살린 push()와 pop() 메소드를 제공한다. 따라서 자바스크립트 배열을 이용하면 손쉽게 스택을 구현할 수 있다. 생성 class Stack{ constructor(arr){ this.arr = [] if(arr) this.arr = arr } } 우선 Stack 클래스 내부에 멤버 변수로 배열을 하나 넣어준다. 삽입 push(val){ this.arr.push(val) } 그리고 배열의 push() 메소드를 이용하여 스택의 push()를 구현한다. 삭제 pop(){ retur..