일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- d3 지도 툴팁
- vue composable 함수
- vuedraggable
- d3 지도 타입스크립트
- cloud firestore id auto increment
- $fetch
- repaint
- in-memory pm2 is out-of-date
- reflow
- 함수형 프로그래밍
- pm2 업데이트 에러
- vue draggable 차트 안나옴
- 이미지 성능 최적화
- vue3 drag and drop
- git
- img 태그 srcset
- d3 지도
- vue 컴포저블 함수
- pm2 버전 충돌
- d3 지도 확대/축소
- Learning React
- commonjs와 ecmascript modules(esm)
- nuxt universal rendering
- component is already mounted please use $fetch instead.
- 헌혈유공패 은장
- firebase id 자동
- ToDo
- 인터넷 거버넌스
- img 태그 sizes
- 웹 퍼포먼스 도구
- Today
- Total
빵 입니다.
연결 리스트(Linked List) 본문
[정의]
- 데이터 요소의 선형 집합
- 이 집합에서 논리적 저장 순서는 메모리의 물리적 저장 순서와 일치하지 않는다.
- 그 대신, 각각의 원소들은 자기 자신 다음의 원소를 가리킨다. (= 링크)
- 이 자료구조는 순회하는 동안 순서에 상관없이 효율적인 삽입이나 삭제가 가능하다.
- 더 복잡한 변형은 추가적인 링크를 더해, 임의의 원소 참조로부터 효율적인 삽입과 삭제를 가능하게 한다.
[특징]
- 연결 리스트 내부의 노드 순서는 항상 유지된다.
- 모든 연결 리스트에는 두 개의 특수한 노드가 있다.
첫 노드인 Head, 마지막 노드인 Tail - Tail 노드는 다음 노드에 대한 참조 값이 없다.
- 모든 노드는 두개의 값을 가지고 있다. 데이터 값과 다음 노드에 대한 참조 값
- 모든 타입의 자바스크립트 데이터를 노드에 할당할 수 있다.
[배열과 연결 리스트]
배열
- 데이터를 연속된 메모리 공간에 저장한다.
- n번째 요소 접근 시 바로 접근이 가능하다.
- 배열 내 데이터 탐색의 시간 복잡도는 O(1)
연속된 공간에 데이터들이 나열되어 있기 때문에 처음 주소만 알면 다른위치에 쉽게 접근 할 수 있다.
ex) 7번째 데이터를 조회하려면, 1번째 데이터에서 6번 점프하면 7번째 데이터를 조회할 수 있다. - 배열 내 데이터 추가 및 삭제 시간 복잡도가 O(n)이다.
배열 내 데이터를 추가하려면 추가하려고 하는 자리를 비우고 뒤에 있는 데이터를 모두 한칸씩 밀어야 하기 때문에 메모리 사용이 비효율적이다. - 컴파일 과정에서 메모리가 할당되는 정적 메모리 할당
- Stack 영역에 메모리 할당
연결 리스트
- 데이터를 연속되지 않은 메모리 공간에 저장한다.
- 데이터는 메모리 상에 고유의 노드로 존재한다.
이 노드는 자신의 앞에 있는 데이터와 뒤에 있는 데이터에 대한 주소를 기억하고 있다. - 연결 리스트 내에 특정 데이터를 조회하려면, 처음부터 순차적으로 탐색해야 한다.
노드들이 연속된 공간에 저장되지 않고, 모두 떨어져 있기 때문이다. - 연결 리스트 내 데이터 탐색의 시간 복잡도는 O(N)이다.
탐색을 하기 위해서는 각 노드가 기억하고 있는 앞의 데이터와 뒤의 데이터 주소에 의지할 수 밖에 없기 때문에 노드들을 loop를 돌려서 탐색해야 한다. - 연결 리스트 내 데이터 추가 및 삭제 시간 복잡도는 O(1)이다.
ex) A - B - C 연결리스트에서 B와 C 사이에 Z를 추가한다면, B가 가리키는 주소 C를 Z로 변경하고 C가 가리키는 주소 B를 Z로 변경하면 되기 때문이다. - 런타임 환경에서 메모리가 할당되는 동적 메모리 할당
- Heap 영역에 메모리 할당
https://kimmeh1.tistory.com/473
[자료구조] Array와 Linked List의 차이는 무엇일까?
Array와 Linked List가 무엇인지 안다면 그 차이는 쉽게 알 수 있을 것이다. Array 배열은 특정 크기만큼 연속된 메모리 공간에 데이터를 저장하는 자료구조이다. 만약 int형 데이터 3개를 저장할 수 있
kimmeh1.tistory.com
https://overcome-the-limits.tistory.com/16
[자료구조] 연결리스트 with JavaScript
들어가며 연결 리스트를 시작으로 자료구조를 본격적으로 공부하려 합니다. 자료구조를 제대로 공부해야만 훗날 근무를 할 때, 더 좋은 코드를 작성할 수 있다고 믿습니다. 그렇다면 연결 리스
overcome-the-limits.tistory.com
Javascript를 이용한 Linked List 구현
Javascript에서 연결리스트는 객체를 통해 구현할 수 있다.아래 예시는 두개의 객체를 next로 연결하여 Linked List의 기본적인 구조를 보여준다연결리스트의 핵심은 node이며, node는 data를 담는 data field
velog.io
[자료구조 with JS] 연결 리스트(Linked List) (1) 개념과 클래스
연결 리스트(Linked List) 연결 리스트는 순서가 있는 데이터의 집합으로, 여러 노드들이 들어있다. 각 노드는 정보를 담고 있으며 다른 노드를 가리킨다. 배열은 크기가 고정되어 있는 만면, 연결
alithedeveloper.tistory.com
Javascript를 이용한 Linked List 구현
Javascript에서 연결리스트는 객체를 통해 구현할 수 있다.아래 예시는 두개의 객체를 next로 연결하여 Linked List의 기본적인 구조를 보여준다연결리스트의 핵심은 node이며, node는 data를 담는 data field
velog.io