Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Manhattan Distance

Data Structures : 리스트 본문

Computer Science/Data Structures

Data Structures : 리스트

timotheekim10 2023. 2. 9. 22:07

리스트란?

  • 리스트는 가장 자유로운 선형 자료구조
  • 스택, 큐, 덱과의 차이점: 리스트는 임의의 위치에서도 항목의 삽입과 삭제가 가능

 

리스트 ADT

  • 데이터: 같은 유형의 요소들의 순서있는 모임
  • 연산
    • List(): 비어 있는 새로운 리스트를 만듦
    • insert(pos, e): pos 위치에 새로운 요소 e을 삽입
    • delete(pos): pos 위치에 있는 요소를 꺼내 반환
    • isEmpty(): 리스트가 비어있는지를 검사
    • getEntry(pos): pos 위치에 있는 요소를 반환
    • size(): 리스트안의 요소의 개수를 반환
    • clear(): 리스트를 초기화
    • find(item): 리스트에서 item이 있는지 찾아 인덱스를 반환
    • replace(pos, item): pos에 있는 항목을 item으로 바꿈
    • sort(): 리스트의 항목들을 어떤 기준으로 정렬
    • merge(lst): 다른 리스트 lst를 리스트에 추가
    • display(): 리스트를 화면에 출력
    • append(e): 리스트의 맨 뒤에 새로운 항목을 추가

 

리스트의 구현 방법

  • 배열 구조(array)
    • 구현이 간단
    • 항목 접근이 O(1)
    • 삽입, 삭제시 오버헤드
    • 항목의 개수 제한
  • 연결된 구조(linked list)
    • 구현이 복잡
    • 항목 접근이 O(n)
    • 삽입, 삭제가 효율적
    • 크기가 제한되지 않음

 

배열 리스트의 시간 복잡도

  • append(e) 연산: 대부분의 경우 O(1)
  • pop() 연산: O(1)
  • insert(pos, e) 연산: O(n)
  • pop(pos) 연산: O(n)

 

배열 리스트 구현

class ArrayList:
    def __init__(self):  # 생성자
        self.items = []  # 멤버 변수 선언 및 초기화

    def insert(self, pos, elem):  # pos 위치에 새로운 요소 item을 삽입
        self.items.insert(pos, elem)

    def delete(self, pos):  # pos 위치에 있는 요소를 꺼내고 반환
        return self.items.pop(pos)

    def isEmpty(self):  # 크기가 0이면 True, 아니면 False 반환
        return self.size() == 0

    def getEntry(self, pos):  # pos번째 항목 반환
        return self.items[pos]

    def size(self):  # 리스트의 크기 반환
        return len(self.items)

    def clear(self):  # items를 초기화
        self.items = []

    def find(self, item):  # 탐색 후 인덱스 반환
        return self.items.index(item)

    def replace(self, pos, elem):  # pos번째 항목 변경
        self.items[pos] = elem

    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)

'Computer Science > Data Structures' 카테고리의 다른 글

Data Structures : 트리  (0) 2023.02.16
Data Structures : 정렬, 탐색  (0) 2023.02.13
Data Structures : 연결된 구조  (0) 2023.02.10
Data Structures : 큐, 덱  (0) 2023.02.10
Data Structures : 스택  (0) 2023.02.09