프로그램 개발은 건물을 건축하는 것과 비슷하다.장난감 집이 초보 개발이라면 고층 아파트는 고급 개발과 같다. 초보 개발에서 고급 개발로 넘어가기 위해서는 자료구조가 필요하다. 초보자는 주먹구구 방식이지만, 고급 개발자는 체계적인 방법이 필요하기 때문이다.컴퓨터 프로그래
넓은 의미로 자료구조와 함께 컴퓨터 프로그램을 구성하는 한가지 요소이다. 컴퓨터 명령어들의 집합이라고도 볼 수 있다.프로그램이 자료와 연산으로 구성되어 있다면 알고리즘은 자료구조와 함께 프로그램을 구성하는 한가지 요소로 볼 수 있다.좁은 의미로는 어떠한 문제를 해결하기
C의 단순 자료형 C에서 기본적으로 제공하는 자료형(Data Type)이다. 정수 자료형 short(2바이트) : -32,768 ~ 32,767 int(4바이트) : -2,147,483,648 ~ 2,147,483,647 long( > 참고 자료 [자료구조] #0
구조체란 서로 다른 자료형의 데이터를 하나의 그룹으로 묶은 자료형을 의미한다. C언어의 기본 타입을 가지고 새롭게 정의 한다고 하여 사용자 정의 타입이라고도 한다. 기본 타입만 가지고 나타내기 어려운 자료를 나타낼 때 사용한다.예를 들어, 학생이라는 구조체가 있다고 가
배열은 메모리 상에 원소를 연속하게 배치한 자료구조이다. K번째 원소의 위치를 바로 알 수 있다. 즉, K번째 원소는 O(1) 시간복잡도를 가진다.추가적으로 소모되는 메모리의 양(overhead)이 거의 없다.Cache hit rate가 높다.메모리 상에 연속한 구간을
자바스크립트로 단일 연결 리스트(Linked List) 구현하기지난 번에 연결 리스트라는 자료구조가 어떤 것인지 살펴봤었다. C++에서는 STL 라이브러리로 지원을 하고 있지만, 자바스크립트에서는 직접 연결 리스트를 구현해서 사용해야 하는 것 같아서 여기저기 구글링해보
자바스크립트 자료구조 - 단일 연결리스트 #1 지난 번에 Node, LinkedList class를 만들고 append, pop, insert까지 코드를 작성했었다. 연결 리스트 맨 뒤에 노드 추가하기 (append) 연결 리스트 임의의 위치에 노드 추가하기 (in
\[자바스크립트 자료구조 단일 연결 리스트- \[자바스크립트 자료구조 단일 연결 리스트지난번 JS로 연결 리스트 만들었을 때는 class를 사용해서 만들었었는데 복습겸 이번에는 생성자 함수를 사용해서 만들어보았다.그때는 개념을 처음 배우면서 따라 만들어보느라 어려웠었는
단일 연결리스트는 다음 노드의 주소만 기억하고 이전 노드를 기억하지 않았지만, 이중 연결 리스트는 다음 노드의 주소와 이전 노드의 주소를 함께 기억하고 있는 자료구조이다.오늘은 DDL에서 맨 뒤에 노드 삽입(appned), 맨 뒤 노드 삭제(pop)하는 것을 구현해보기
\[- 이중 연결 리스트 어제 워밍업(?) 느낌으로 가장 간단한 두가지 기능만 구현했었다.나머지 구현한 메서드는 다음과 같다.n번째 위치에 노드 추가n번째 위치 노드 삭제특정 값을 가진 노드 삭제현재 노드를 순서대로 출력현재 노드를 역순으로 출력이중 연결 리스트가 비어
원형 연결 리스트 단일 연결 리스트는 한 방향으로만 진행되어 결국 마지막 노드의 next가 가르키는 값은 null이 되지만, 원형 연결 리스트는 마지막 노드의 next는 연결 리스트의 가장 맨 앞 노드인 head를 가르키는 형태로 구성되어 있다. 그림으로 대충 그려보
\[자료구조 원형 연결 리스트(Circular Linked List) 지난 번에 원형 연결 리스트 구현하다 남은 부분 구현하기n번째 추가n번째 삭제특정 data값을 가진 노드 삭제원형 리스트의 현재 모든 노드 출력메서드 이름을 뭐라고 지어야 할지 고민하다가 결국 dro
스택은 후입선출 LIFO(Last In First Out)구조로 나중에 넣은 데이터가 가장 먼저 나오는 자료구조이다.보통은 스택의 가장 위에 있는 데이터만 확인하거나 삭제할 수 있다. 구현에 따라 맨 위에 위치하지 않은 데이터도 확인할 수 있게 작성할 수 있겠지만 대체
큐는 선입선출 (FIFO : First In First Out) 방식으로 먼저 넣은 데이터가 먼저 나오는 자료구조이다.큐에 원소 추가, 제거 O(1)큐의 맨 앞, 맨 뒤 원소 확인 O(1) 만큼의 시간 복잡도를 가진다.자바스크립트 배열 내장 메서드 없이 구현해보았는데
덱(Double Ended Queue)은 양쪽 끝에서 삽입, 삭제가 가능한 자료구조이다.데이터 추가 O(1)데이터 삭제 O(1)맨 앞, 맨 뒤 데이터 확인 O(1)배열로 구현했기 때문에 배열 내장 메서드를 사용할 수도 있으나, unshift나 shift를 사용하면 데이