본문 바로가기

자료구조

[자료구조] 링크드리스트 (linked list)

링크드 리스트 구조

  • 연결 리스트라고도 한다
  • 배열 : 순차적으로 연결된 공간에 데이터를 나열하는 구조
  • 링크드 리스트 : 떨어진 곳에 있는 데이터를 화살표로 연결하는 구조
  • 기본구조 & 용어
    • 노드 (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