데브코스/Week 2
Week2 - 2
out_of_anjoong
2024. 3. 26. 17:34
Linked List
종류
- Linked List(단순 연결 리스트)
- Doubly Linked List(양방향 연결 리스트)
- Circular Linked List(원형 연결 리스트)
주요 개념
- 노드 : 데이터와 다음 노드를 가리키는 포인터로 이루어진 구조체이다.
양방향, 원형 연결 리스트는 이전 노드를 가리키는 포인터도 가지고 있음. - head : 연결 리스트의 맨 앞
- tail : 연결 리스트의 맨 뒤
- nodeCount : 연결 리스트의 사이즈
- 추가/삽입 : 삽입하려는 위치의 노드(A)와 그 다음 노드(B)가 있다.
A 노드의 다음 노드는 삽입하는 노드. 삽입하는 노드의 다음 노드는 B노드가 된다.
양방향 연결 리스트는 삽입하는 노드의 이전 노드는 A 노드, B 노드의 이전 노드를 삽입하는 노드로 설정이 필요하다.
(Head, Tail)더미 노드를 사용하지 않는 경우 삽입하려는 위치에 따라 Head와 Tail의 재정의가 필요할 수 있다.- 필요한 예외 처리
불가능한 위치에 노드 삽입
- 필요한 예외 처리
- 삭제/제거 : 제거하려는 노드의 위치와 그 이전 노드(A), 그 다음 노드(B)가 있다.
A 노드의 다음 노드는 B가 된다.
양방향 연결 리스트의 경우 B 노드의 이전 노드는 A가 된다.
제거하려는 위치에 따라 Head와 Tail 정보를 재정의할 필요가 있다.- 필요한 예외 처리
연결 리스트가 비어있을 경우, 불가능한 위치의 노드 제거
- 필요한 예외 처리
- 열람 : head부터(양방향 연결 리스트에서는 사이즈의 절반 부터 tail까지) 해당 위치까지 이동 후 데이터 return
- 두 연결 리스트 합치기 : 앞 연결 리스트(A), 뒤 연결 리스트(B)
A 리스트의 Tail 이전 노드의 다음 노드는 B 리스트 Head의 다음 노드.
B 리스트 Head의 다음 노드의 이전 노드는 A리스트의 Tail 노드의 이전 노드.
A 리스트의 Tail의 이전 노드는 B 리스트의 Tail의 이전 노드로 재정의.
- 필요한 예외 처리
A가 비어있을 경우, B가 비어있을 경우
- 필요한 예외 처리
Stack
특징
- LIFO(Last In First Out)
주요 개념
- size(): 현재 스택에 들어 있는 데이터 원소의 수를 구함
- isEmpty(): 현재 스택이 비어 있는지를 판단
- push(x): 데이터 원소 x 를 스택에 추가
- pop(): 스택에 가장 나중에 저장된 데이터 원소를 제거
- top(), peek(): 스택에 가장 나중에 저장된 데이터 원소를 참조
활용
- 재귀 함수
- 후위표현 수식 및 계산