링크드 리스트 구조
- 연결 리스트라고도 한다
- 배열 : 순차적으로 연결된 공간에 데이터를 나열하는 구조
- 링크드 리스트 : 떨어진 곳에 있는 데이터를 화살표로 연결하는 구조
- 기본구조 & 용어
- 노드 (Node) : 데이터 저장단위로 구성 (데이터값+포인터)
- 포인터(pointer) : 각 노드 안에서 다음이나 이전의 노드와의 연결정보를 가지고 있는 공간
링크드 리스트 장단점
- 장점
- 미리 데이터 공간을 할당하지 않아도 됨
- 단점
- 연결을 위한 별도의 데이터 공간이 필요 = 저장공간 효율이 낮음
- 연결 정보를 찾는 시간이 필요하므로 접근속도가 느림
- 중간 데이터 삭제시, 앞뒤 데이터의 연결을 재구성해야 하는 부가적인 작업 필요
링크드 리스트 구현
class Node:
def __init__(self, data, next=None):
self.data = data
self.next = next
class NodeMgmt:
def __init__(self, data):
self.head = Node(data)
def add(self, data):
if self.head == '':
self.head = Node(data)
else:
node = self.head
while node.next:
node = node.next
node.next = Node(data)
def desc(self):
node = self.head
while node:
print (node.data)
node = node.next
for data in range(1, 10):
linkedlist1.add(data)
linkedlist1.desc()
'자료구조' 카테고리의 다른 글
[자료구조] 힙 (heap) (0) | 2020.01.28 |
---|---|
[자료구조] 트리 (Tree) (0) | 2020.01.24 |
[자료구조] 해쉬테이블 (Hash Table) (0) | 2020.01.22 |
[자료구조] 스택 (stack) (0) | 2020.01.09 |
[자료구조] 큐 (queue) (0) | 2020.01.09 |