본문 바로가기
컴퓨터 공학/자료구조

[자료구조] 리스트 (List)

by kim-dev 2024. 1. 7.
반응형

리스트: 항목들이 나열되어 있는 자료구조.
굉장히 자유로운 선형 구조이며 우리가 일상생활에서 가장 흔히 접할 수 있는 구조이다.
간단하게 생각하면, 여러 요소들을 마구잡이로 하나로 모아 놓은 구조라고 생각하면 될 듯...?

 

리스트의 기능

  • insert(pos, e): pos 위치에 새로운 요소 e를 삽입한다.
  • delete(pos): pos 위치에 있는 요소를 삭제하고 반환한다.
  • isEmpty(): 리스트가 비어있으면 True를, 아니면 False를 반환한다.
  • getEntry(pos): pos 위치에 있는 요소를 반환한다.
  • size(): 리스트의 요소 개수를 반환한다.
  • clear(): 리스트를 초기화한다.
  • find(e): 리스트에서 e를 찾아 인덱스를 반환한다.
  • replace(pos, e): pos에 있는 요소를 e로 바꾼다.
  • sort(): 리스트의 요소들을 기준에 따라 정렬한다.
  • merge(lst): 리스트 lst를 현재 리스트에 병합시킨다.
  • display(): 리스트를 출력한다.
  • append(e): 리스트의 맨 뒤에 새로운 항목을 추가한다.

리스트의 구현

class List:
    def __init__(self):
        self.items = []
        
    def insert(self, pos, e):
        self.items.insert(pos, e)

    def delete(self, pos):
        self.items.pop(pos)

    def getEntry(self, pos):
        return self.items[pos]

    def isEmpty(self):
        return len(self.items) == 0

    def size(self):
        return len(self.items)

    def clear(self):
        self.items = []

    def find(self, item):
        return self.items.index(item)

    def replace(self, pos, e):
        self.items[pos] = e

    def sort(self):
        self.items.sort()

    def merge(self, lst):
        self.items.extend(lst)

    def display(self, msg='ArrayList:'):
        print(msg, self.size(), self.items)

 

시간복잡도
append(): O(1)
insert(), pop(): O(n)


파이썬의 배열은 타 언어와는 다르게 동적 배열이기 때문에, 리스트의 크기가 자동으로 확장된다.
C언어나 자바 같은 경우에는 처음 선언한 크기 만큼밖에 사용하지 못하는데, 파이썬에는 그런 제약이 없다.(정확하게는 제약이 있지만 자동으로 크기가 더 큰 배열으로 이동시켜주는 방식)

 

작성일자: 2023-02-21

'컴퓨터 공학 > 자료구조' 카테고리의 다른 글

[자료구조] 연결된 구조 (Linked Structure)  (0) 2024.01.07
[자료구조] 덱 (Deque)  (0) 2024.01.07
[자료구조] 큐 (Queue)  (0) 2024.01.07
[자료구조] 스택 (Stack)  (0) 2024.01.07
[자료구조] 집합 (Set)  (1) 2024.01.07