B. 선형 자료구조
1. 연결 리스트
a. 노드
🌟 리스트를 구현할 때 가장 핵심
46강에서 설명한 것 처럼, 101호 방 자체(데이터 공간)를 노드로 표현한다
b. 노드로 연결리스트 생성 (단방향)
c. 단방향 리스트의 문제점
첫 번째 노드를 '헤드'라고 부르는데 (마지막 노드는 '테일')
마지막 값을 얻고 싶다면, 첫번째 부터 다 거쳐야 하고
중간에 값을 삽입하고 싶다면 그 전 후 값을 다 알아서 낑겨넣어줘야 함
👉 따라서 양방향으로 생성하는게 일반적임
d. 양방향 리스트 생성
헤드와 테일을 아래와 같이 따로 지정해줘야함
2. 실습 : 미로 맵 만들어보기
a. Maze 프로젝트 생성
b. 기본적인 틀 생성하기
c. 노드 생성하기
1) 첫 노드 추가
2) 첫 노드가 아닌 노드 추가
d. dummy node
첫 노드를 추가할 때 예외처리 해줘야 하는 번거로움 때문에
의미없는 dummy node를 추가해서 처리하는 경우가 있음
e. node 삭제하기
결국 데이터도 마지막엔 소멸자에서 소멸해줘야 함
f. dummy node를 활용한 AddAtHead 수정하기
g. AddAtTail 생성하기
위에서 생성한 AddAtHead와 반대로 생성하면 됨
h. 출력하기
i. 임의의 노드 찾기
j. 중간 삽입/삭제의 속도가 빠른 이유
몇 번째 노드를 찾아서 삭제하는것은 느리지만
🌟 노드의 위치를 먼저 알고 있다면 중간 삽입/삭제의 속도는 빠르다
1) 노드 삭제하기
그냥 그 연결고리만 다시 바꿔주면 끝
2) 노드 추가하기
'자료구조와 알고리즘 > Data Structure' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] 선형 자료구조 3 : 스택 & 큐 (53강) (1) | 2024.02.15 |
---|---|
[게임 프로그래머 입문 올인원] 선형 자료구조 실습 2 : 플레이어 이동하기(51강) (0) | 2024.02.15 |
[게임 프로그래머 입문 올인원] 선형 자료구조 실습 1 : 미로 맵 만들기(50강) (0) | 2024.02.14 |
[게임 프로그래머 입문 올인원] 선형 자료구조 2 : 동적배열 (48강) (0) | 2024.01.23 |
[게임 프로그래머 입문 올인원] 자료구조 : 선형과 비선형 기초내용 (46강) (0) | 2024.01.23 |