0. 개요
순차 리스트 | 연결 리스트 | |
장점 | i 번째 원소의 값 접근이 빠름 연속된 값 읽기가 빠름 |
원소의 삽입 / 삭제가 빠름 |
단점 | 원소의 삽입 / 삭제가 느림 | i 번째 원소의 값 접근이 느림 연속된 값 읽기가 느림 |
✔️ 메모리
컴퓨터에는 3가지 중요한 부품
- CPU
- 메모리(memory) : RAM
- 스토리지(storage) : HDD/SSD
메모리 : 속도 빠르다. 용량이 작다. 전기를 끄면 데이터가 사라진다.
스토리지 : 속도 느리다. 용량이 크다. 전기를 꺼도 데이터가 남아있다.
따라서 데이터는 기본적으로 스토리지에 저장되고 프로그램을 실행할 땐 프로그램과 데이터는 메모리로 옮겨져 CPU는 메모리에 로드된 데이터로 작업을 한다.
🚩 자료구조를 공부하는 이유: 메모리의 효율적인 사용
1. 구조
node (vertex) : 데이터 저장 단위 (Data field, Link field)로 구성
pointer : 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간
Head : 첫 번째 노드가 무엇인지에 대해 저장
2. 초기화 (init)
다음 노드를 가리키는 포인터를 null로 설정한다.
- 파이썬
Class Node:
def __init__(self, data):
self.data = data
self.next = None
3. 데이터 삽입
✔️ 가장 앞에 삽입
- 슈도코드
// 노드를 생성한다.
Vertex temp = new Vertex(input)
// 첫번 째 노드를 정한다.
temp.next = head
// 시작이 되는 노드가 새로 생성된 노드라는 것을 정한다.
head = temp
✔️ 중간에 삽입
- 슈도코드
Vertex temp1 = head
//현재 k의 값은 2
while (--k!=0)
temp1 = temp1.next
Vertex temp2 = temp1.next
Vertex newVertex = new Vertex(input)
temp1.next = newVertex
newVertex.next = temp2
4. 데이터 삭제
- 슈도코드
Vertex cur = head
//현재 k의 값은 2
while (--k!=0)
cur = cur.next
Vertex tobedeleted = cur.next
cur.next = cur.next.next
delete tobedeleted
순차 리스트는 삽입/삭제 시 노드의 자리 이동이 필요했다. 하지만 연결 리스트는 삽입/삭제 시 해당 노드 전, 후의 참조값(next)만 변경하면 되기 때문에 속도가 빠르다.
5. 구현
- Java
📌 Reference
반응형
'Computer Science > CS' 카테고리의 다른 글
[알고리즘] 그래프 탐색 알고리즘 DFS / BFS (0) | 2022.08.03 |
---|---|
[자료구조] 그래프(Graph) (0) | 2022.08.01 |
[자료구조] 트리 (Tree) (0) | 2022.07.29 |
[디자인 패턴] #1. 싱글톤 패턴 (singleton pattern) (2) | 2022.06.10 |
댓글