CS/자료구조_개념 5

[자료구조] 트리(Tree)

- Node와 Branch를 이용해서 사이클을 이루지 않도록 구성한 데이터 구조 - 이진트리 : 노드의 최대 Branch가 2인 트리 - 이진탐색트리(Binary Search Tree, BST) : 왼쪽 노드는 해당 노드보다 작은 값, 오른쪽 노드는 해당 노드보다 큰 값을 가진다. #코드 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82..

[자료구조] : 연결리스트(Linked List, Double Linked List)

# Linked List #개념은 아래 링크에서 직접 값을 넣고 빼보면서 확인해볼 것. www.cs.usfca.edu/~galles/visualization/StackLL.html Linked List Stack Visualization www.cs.usfca.edu 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 class Node: def __init__(self, data, next=None): self.data = data self.next = next class ..

[자료구조] : 스택(선형)

- 데이터를 제한적으로 접근할 수 있는 구조(LIFO) - 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조. 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조 - push() : 데이터를 스택에 삽입 - pop() : 데이터를 스택에서 꺼내기 - 장점 : 구조가 단순해서 구현이 쉽다., 데이터 저장/읽기 속도가 빠르다. - 단점 : 데이터 최대 갯수를 미리 정해야 한다., 파이썬의 경우 재귀함수는 1000번 까지만 호출가능하다. # 재귀함수 결과가 스택과 유사하다. def recursive(data): if data < 0: print('ended') else: print(data) recursive((data-1)) print('returned', data) recursive(4) ===..

[자료구조] : 큐(선형), 힙

- 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조(FIFO, First In First Out) - Enqueue : 큐에 데이터를 넣는 기능 - Dequeue : 큐에서 데이터를 꺼내는 기능 # 파이썬에서의 큐 import queue # 1. 일반적인 큐(FIFO) data_queue = queue.Queue() data_queue.put('FIFO Q') data_queue.put(1) print(data_queue.qsize()) print(data_queue.get()) print(data_queue.qsize()) # 2. LIFO(Last In First Out) data_queue = queue.LifoQueue() data_queue.put('LIFO Q') data_queue.p..

[자료구조] : 배열

1. 같은 종류의 데이터를 효율적으로 관리하기 위해 사용 2. 같은 종류의 데이터를 순차적으로 저장 장점 : 빠른 접근 가능 단점 : 추가/삭제가 쉽지 않음 - 1차원 배열 data = [1, 2, 3, 4, 5] print(data) - 2차원 배열 data2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(data2) # 예제 dataset리스트에서 전체 이름 안에 'M'의 갯수? dataset = [ 'Moran, Mr.Owen', 'Brand, Mr.James', 'McCarthy, Mr.Timothy J' ] m_count = 0 for data in dataset: for idx in range(len(data)): if data[idx] == 'M': m_count..

반응형