목록CS/Algorithm (3)
에르노트
연결 리스트(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..