목록python (19)
without haste but without rest
해시 테이블(Hash Table) 해쉬 테이블은 키와 밸류를 기반으로 데이터를 저장한다. 파이썬에서는 딕셔너리가 있어서 굳이 만들 필요는 없는데, 아무래도 파이썬으로 코드를 짜면 간단해서 파악하기가 쉽다는 장점이 있다. 위 이미지에서 문자열(John smith...) 데이터는 해쉬 함수를 거쳐 숫자로 변경된다. 변경된 이 값(해시)를 배열(buckets)의 키로 삼아 밸류를 저장한다. 따라서 데이터를 서칭하는 과정에서 배열을 순차적으로 탐색할 필요없이 해시 함수를 거쳐 생성된 해시 값으로 데이터를 빠르게 찾을 수 있다. 딕셔너리의 key-value 구조와 유사하다. 키(Key): 인풋 데이터 *ex) John Smith, Lisa Smith 값(value): 저장할 데이터 *ex) 521-8976, 52..
더블 링크드 리스트(Doubly Linked List) 더블 링크드 리스트는 포인터가 다음 주소 뿐만 아니라 이전 주소도 갖는다. 링크드 리스트 구조에서 이전 주소값을 저장할 멤버를 추가로 만들어주면 된다. class Node: def __init__(self, data, prev = None, next = None): self.data = data self.prev = prev self.next = next class DLinkedList: def __init__(self): self.head = None def insert(self, data): if self.head == None: self.head = Node(data) else: node = self.head while node.next: no..
링크드 리스트(Linked List) 배열은 정해진 공간에 데이터를 순차적으로 적재한다. 반면, 링크드 리스트는 노드가 다음 노드(데이터)의 주소값을 가지고 있다. 따라서 배열이 공간의 크기를 미리 할당 해줘야 한다는 단점을 해결할 수 있다. 단, 저장 측면에서는 비효율적이다. 구조 노드(Node): 데이터를 저장하는 단위 (데이터와 포인터로 구성) 포인터(Pointer): 각각의 노드 안에서 다음 노드의 주소(위치)를 가짐 위 이미지에서 정사각형 두개가 붙은 구조가 하나의 노드이고, 화살표가 포인터다. 즉 여러개의 노드들이 연결된 구조다. class Node: def __init__(self, value): self.value = value self.next = None class LinkedList:..