본문 바로가기
반응형

연결 리스트3

원형 이중 연결 리스트 Preface 이번 장에선 연결 리스트의 단점을 보완한 원형 이중 연결 리스트를 공부했다. 코드의 구성 면에선 포인터와 커서를 이용한 연결 리스트와 크게 다른 부분이 없어 손쉽게 코드를 작성할 수 있었다. 나는 왜 지금껏 연결 리스트를 공부하며 노드를 역순으로 스캔할 생각을 하지 않았을까? 코드의 효율성은 단순히 얻어지는 것이 아니라 끝없이 더 나은 방법을 모색해야만 떠올릴 수 있는 것인데, 나는 책에 나온 방법에 한해서만 고민하는 것 같다. 아마도 '우물 안의 개구리'는 이럴 때 쓰는 말이 아닐까 싶다. 더 넓게 더 멀리 봐야 하는데 주어진 내용이 전부라 생각하고 그 이상은 생각하지 않게 된다. 공부를 하면 할 수록 책에 나온 내용만을 공부하는 것이 아닌, 개인 프로젝트를 통해 나만의 코드를 작성하며 .. 2022. 1. 18.
커서를 이용한 연결 리스트 Preface 이번 장에선 커서를 이용한 연결 리스트를 공부했다. 이는 연결 리스트를 사용하는 방법 중 하나이므로 지난 장에서 공부했던 포인터를 이용한 연결 리스트와 크게 다른 부분이 없었다. 한 가지 다른 점이라면 프리 리스트를 사용한다는 것인데, 이 또한 배열의 빈 공간 인덱스를 특정 변수에 저장한다는 개념일 뿐 특별한 점은 없어 어렵지 않게 이해할 수 있었다. - 커서(cursor) : 인덱스로 나타낸 뒤쪽 포인터 - 커서를 이용한 연결 리스트 : 데이터 개수가 크게 변하지 않거나 데이터 최대 개수를 예측할 수 있는 경우 프리 리스트를 사용하여 메모리를 확보하는 구조 - 커서를 이용한 연결 리스트 코드 # 커서로 연결 리스트 구현하기 from __future__ import annotations f.. 2022. 1. 15.
연결 리스트, 포인터를 이용한 연결 리스트 Preface 이번 장에선 리스트의 종류들 중 포인터를 통해 효율성을 향상시킨 연결 리스트에 대해 공부했다. 만들어야 할 함수가 많아 코드가 생각보다 길어졌지만, 클래스를 통해 선언하는 단순한 함수들을 나열한 것이므로 크게 어려운 부분은 없었다. 며칠 간 책에 있는 내용들을 이해하기 어려워 스트레스를 많이 받았었는데, 이번 장은 쉽게 이해할 수 있었던 탓인지 숨통이 조금 트인 것 같다. 1. 연결 리스트 - 리스트 : 순서가 있는 데이터를 늘어놓은 자료구조 1) 선형 리스트 : 데이터의 논리적인 순서와 기억 장소에 저장되는 물리적인 순서가 일치하는 구조 2) 연결 리스트 : 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 구조 - 연결 리스트 용어 1) 노드 : 각각의 원소 2) 머리 노드 :.. 2022. 1. 13.