이번 포스팅에서 정리 할 내용은
링크드 리스트(Linked list)
에 대한 개념이다.
우선 링크드 리스트란 연결 리스트라고도 하며, 순차적으로 연결된 공간에 데이터를 나열하는 구조인 배열과 대조적으로
링크드 리스트는 떨어진 곳에 존재하는 데이터들을 화살표로 연결해서 관리하는 구조로 되어있다.
C언어에서는 주요한 데이터 구조이지만, Python에서는 리스트 타입이 링크드 리스트의 기능을 모두 지원한다.
링크드 리스트의 기본 구조와 용어
노드(Node) : 데이터 저장 단위(데이터값, 포인터)로 구성이 되어있다.
포인터(Pointer) : 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있다.
링크드 리스트의 장단점(전통적인 C언어에서의 배열과 링크드 리스트)
- 장점
- 배열은 미리
미리 데이터 공간을 할당
해야되는 것에 반해 링크드 리스트는 미리 데이터 공간을 할당하지 않아도 된다.
- 배열은 미리
- 단점
- 연결을 위한 별도의 데이터 공간이 필요하므로 저장공간 효율이 높지 않다.
- 연결정보를 찾는 시간이 필요하기 때문에 접근 속도가 느리다.
- 중간 데이터 삭제시, 앞 뒤 데이터의 연결을 재구성해야 하는 부가적인 작업이 필요하다.
Node 구현
1 | class Node: |
새로운 Node를 추가하는 method 작성하기
1 | def add(data): |
생성된 링크드 리스트 출력해보기
1 | node = head |