이해를 돕기 위한 사진자료는 잘 넣지 않을 예정이다.
넣으면 물론 좋긴 하겠지만 찾는데 시간이 많이 걸리고 포스팅에 비효율적이다. 그래서 최대한 담백하게 쓸 예정이다.
데이터 구조는 일단 컴퓨터의 메모리에 데이터를 구성하고 저장하는 방법을 말한다.
데이터에 대한 효율적인 접근과 수정이 가능하도록 설계되었고 이는 데이터 삽입, 삭제 및 검색과 같은 다양한 작업을 지원하는데 사용한다. 아래는 익히 우리가 항상 배웠던 내용들이다.
1. 배열
배열은 동일한 유형의 고정된 수의 요소를 저장하는 연속된 메모리 블록이다. 배열은 데이터를 순차적으로 저장하고 접근하는데 유용하나 배열의 모든 후속 요소를 이동해야하기 때문에 요소를 삽입하거나 삭제하는데는 효율적이지 않다.
(이 내용은 링크드 리스트를 배울때 자세하게 할 수 있는 부분이기도 하다)
2. 링크드 리스트
링크드 리스트는 일련의 노드(Node라는 Struct를 만들면 되는데 안에 보통 데이터와 node 부분이 있다)로 구성된 데이터 구조다. 각각 값과 다음 노드에 대한 참조(포인터)를 포함한다. 링크된 목록은 노드 간 링크만 업데이트하면 되므로 요소를 삽입하고 삭제하는데 유용하다. 즉 배열을 쓰지 말고 이걸 쓰면 된다. 하지만 처음부터 목록을 통과해야 하기 때문에 임의로 요소에 접근하는데 효율적이지는 못하다.
3. 스택
스택은 요소를 LIFO(last-in, first-out) 순서로 추가 및 제거할 수 있는 데이터 구조이다. 쉽게 생각하면 가로로 눕혀있는 배열을 그대로 세로로 세워놨다고 생각하면 이해가 편하다. 스택은 실행 취소 / 재실행 기능을 구현하는 데 유용하고 식을 평가하고 균형 조정과 같은 문제를 해결하는데도 유용하다.
4.대기열(큐)
대기열(큐)은 선입선출(FIFO)순서로 요소를 추가하고 제거할 수 있는 데이터 구조이다. 큐는 작업을 예약하고 순서를 유지하는데 유용하고 너비 우선 검색 알고리즘을 구현하는 데도 유용하다.
5. 트리
트리는 계층 구조로 구성된 노드로 구성된 데이터 구조이다. 위쪽에 루트 노드가 있고 아래쪽에 하위노드가 있다. 트리는 데이터를 계층적 방식으로 저장하고 접근하는데 유용하며 깊이 우선 검색이나 이진 검색과 같은 검색 알고리즘을 구현하는데 유용하다.
대표적은 데이터 구조는 위 5개와 같다. 나머지는 이것을 응용하는 것들이다. 소프트웨어 개발에서 데이터 구조는 종종 효율적이고 확장 가능한 방식으로 데이터를 저장하고 조작하는데 사용된다. 주어진 작업에 적합한 데이터 구조를 선택하는 것은 시스템의 성능, 신뢰성에 큰 영향을 미칠 것이다.
+ 추가적인 내용.
- 배열
아래 링크를 들어가면 배열에 대한 시각적 내용을 바로 볼 수 있다.
https://visualgo.net/en/list?slide=1
또 이 문서에는 배열과 배열의 특성에 대해 자세히 설명되어있다.
https://www.tutorialspoint.com/data_structures_algorithms/array_data_structure.html
- 링크드 리스트
아래 링크를 들어가면 링크드 리스트에 대한 시각적 정보를 바로 볼 수 있다.
https://visualgo.net/en/list?slide=2
그리고 아래 링크는 링크드 리스트의 설명과 특성을 설명한 문서이다.
https://www.tutorialspoint.com/data_structures_algorithms/linked_list_data_structure.html
- 스택
스택에 관한 시각적 자료
https://visualgo.net/en/list?slide=3
스택에 관한 문서 내용
https://www.tutorialspoint.com/data_structures_algorithms/stack_data_structure.html
- 대기열(큐)
대기열(큐)에 관한 시각적 자료
https://visualgo.net/en/list?slide=4
대기열(큐)에 대한 문서 내용
https://www.tutorialspoint.com/data_structures_algorithms/queue_data_structure.html
- 트리
트리에 관한 시각적 자료
트리에 관한 문서적 내용
https://www.tutorialspoint.com/data_structures_algorithms/tree_data_structure.html
'1일 1cs' 카테고리의 다른 글
[2일째] 디자인 패턴 (0) | 2023.01.10 |
---|---|
SQL의 종류 (1) | 2022.09.25 |
HTTP vs HTTPS (0) | 2022.09.24 |
스택(Stack)2개로 큐(Queue) 구현하기 (0) | 2022.09.18 |
운영체제 / 스풀링(Spooling) 알아보기 (0) | 2022.09.15 |