본문 바로가기
하지의 코딩일지/STUDY MEMO[BACKEND]

연결 리스트(Linked List)

by 하지마지 2023. 7. 13.
728x90

데이터를 링크로 연결해서 관리하는 자료구조

자료의 순서는 정해져 있지만, 메모리상 연속성이 보장되지는 않음

 

연결 리스트의 장점

데이터 공간을 미리 할당할 필요 없음

즉, 리스트의 길이가 가변적이라 데이터 추가/삭제 용이

 

연결 리스트의 단점

연결 구조를 위한 별도 데이터 공간 필요

연결 정보를 찾는 시간이 필요(접근 속도가 상대적으로 느림)

데이터 추가, 삭제 시 앞뒤 데이터의 연결을 재구성하는 작업 필요'

 

연결 리스트 기본 구조

노드(Node)

-데이터 저장 단위로, 값과 포인터로 구성

                                          포인터(Pointer) : 다음 노드와 이전 노드의 연결 정보


데이터 추가 

-데이터 추가 위치(head, 중간, tail)에 따른 연결 작업 필요

가장 앞에 추가

1. 추가할 데이터를 담을 노드 생성

2. 링크 연결 작업 

3. head 이전 작업

가장 끝에 추가
중간에 추가


데이터 삭제

-데이터 삭제 위치(head,중간,tail)에 따른 연결 작업 필요

1. 삭제 대상 노드 지정(delete_node)

2. head 이전 작업

3. delte_node 삭제

1. head로 부터 가장 끝까지 순화

2. 끝 노드 삭제

3. 삭제 이전 노드의 링크 처리

1. head로부터 삭제 대상 노드까지 순회 및 해당 노드 지정(delete_node)

2. 삭제 대상 이전/ 이후 노드의 링크 연결 작업

3. delete_node 삭제


myList. addData(); // myList에 ()데이터 추가

.removeData(); //데이터 제거

.showData(); //현재 데이터 출력

 

 

 

 

728x90

'하지의 코딩일지 > STUDY MEMO[BACKEND]' 카테고리의 다른 글

힙(Heap)  (1) 2023.07.18
해시 테이블(Hash Table)  (0) 2023.07.13
배열(Array)  (1) 2023.07.12
데크(Deque)  (1) 2023.07.12
큐 (Queue)  (0) 2023.07.11