JavaScript로 연결 리스트를 구현해본다.데이터(노드)의 추가와 삭제가 빈번하게 이루어질 경우 배열을 사용하는 것 보다 연결 리스트를 사용하는 것이 좋다. 연결 리스트의 특징은 head 포인터와 tail 포인터를 갖으며 각 노드는 다음 노드를 가리키는 포인터를 갖
이중 연결 리스트는 단일 연결 리스트와는 다르게 다음 노드를 가리키는 포인터와 이전 노드를 가리키는 포인터를 갖고 있다. 따라서 단일 연결 리스트보다는 자료 구조의 크기가 조금 더 크다. 이중 연결 리스트또한 head, tail 포인터를 갖는다. 생성과 동시에 바로
자바스크립트에서 스택을 사용하는 방법은 2가지가 있다. 첫 번째로 배열을 사용하는 것이고 두 번째로 연결 리스트로 구현하는 방법이 있다. 자바스크립트 배열은 동적으로 추가가 가능하고 이미 push, pop 기능이 구현되어 있기 때문에 그대로 사용하면 된다. 따라서 연
자바스크립트에서 큐는 구현되어 있지 않다... 직접 구현해야 한다. 큐를 구현하는 방법은 2가지가 있는데, 배열을 사용하는 방법과 연결 리스트를 사용하는 방법이 있다. 배열 Queue를 만들고 인덱스를 가리키는 front와 rear는 모두 0으로 초기화 한다. que
해시 함수를 사용해서 key를 고유 index로 변환해서 해시 테이블에 값을 저장한다. index를 만들기 위해서 해시 함수를 사용한다. 해시 테이블에는 문제점이 있는데, 해시 함수를 사용해서 생성된 인덱스가 중복될 수 있다는 문제가 있다. 따라서 해시 함수에는 선형
자료구조에서 선형 구조는 배열, 연결 리스트, 스택, 큐가 있다. 비선형 자료구조로는 트리와 그래프가 있다. 이번에는 비선형 자료구조중 그래프에 대해서 알아본다. 그래프란 정점과 정점 사이를 연결하는 간선으로 이루어진 비선형자료구조로 정점 집합과 간선 집합으로 표현할
트리는 방향 그래프의 일종으로 정점을 가리키는 간선이 하나 밖에 없는 구조를 갖고 있다. 가장 상위에 존재하는 정점 노드를 루트 노드라 부른다. 각 정점은 노드가 되고 자식이 없는 노드를 Leaf Node라고 한다. 트리에는 레벨이라는 개념이 존재한다. 레벨은 트
힙을 사용하기 전에 우선순위 큐에대해서 알고 있어야 한다. 우선순위 큐는 일반적인 큐와 달리 요소마다 우선순위를 갖고 있으며, FIFO 구조에 따라 가장 첫 번째 요소가 먼저 출력되는 것이 아니라 우선순위가 높은 요소가 먼저 출력된다.우선순위 큐는 자료구조가 아닌
자바스크립트를 공부하면서 가장 많이 듣게되지만 쉽게 지나치고 주의깊게 생각하지 않으면 무심코 지나가는 내용이라 생각한다. 나만 그럴지도 모르겠지만...변수와 식별자는 너무 쉽게 혼용되어 표현할 수 있기 때문에 한번 정확하게 알아보려 한다.자바스크립트 공부를 하면서 다