본문 바로가기

자료구조2

[자료구조] 파이썬으로 단일연결리스트 구현하기 단일연결리스트 동적 배열의 단점 동적 배열은 연속된 메모리 공간에 값을 할당한다. 파이썬의 리스트는 값을 직접 저장하지 않고 해당하는 객체의 주소를 저장하는 레퍼런스 배열이기 때문에 다른 언어의 배열과는 약간 다르다. 동적 배열은 먼저 크기를 할당해 메모리 공간을 미리 확보해놓고 이후에 값을 저장하기 때문에 대부분의 경우 저장하는 요소의 수가 배열의 길이보다 작다. append 연산은 분할 분석 방식으로는 O(1) 의 시간복잡도를 가지지만 실제로는 배열이 가득 찼을 때 resize 연산을 하면서 O(n) 의 시간복잡도를 가진다. 즉 특정 시점(배열이 가득 찼을 때)에 연산 속도가 갑자기 느려진다. 이는 실시간 시스템에서는 문제를 유발할 수 있다. 동적 배열의 단점을 정리하면 아래와 같다. 동적 배열의 길.. 2020. 11. 8.
[자료구조] 파이썬으로 스택(Stack) 구현하기 스택(Stack) 스택은 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 선형 자료구조입니다. 가장 마지막에 들어온 데이터가 가장 먼저 나가는 LIFO(Last In First Out)방식을 사용합니다. 웹브라우저의 뒤로가기나 편집기의 되돌리기(undo) 기능이 이런 방식을 이용합니다. 사실 파이썬의 리스트는 스택이 가져야할 메서드를 이미 가지고 있습니다. 따라서 스택 자료형을 따로 만들 필요는 없습니다. 하지만 그냥 공부한다는 생각으로 간단하게 스택 자료형을 만들어봅시다. 기본적으로 아래의 네 가지 연산이 필요합니다. S.push(e): Top에 새로운 요소를 추가 S.pop(): Top 요소를 반환하면서 제거 S.top(): Top 요소를 제거하지 않고 반환 S.is_empty(): 스택이 비어있으면 Tru.. 2020. 11. 6.