여기에 질문 올려도 되는건지 잘모르겠네요..
이번에 74장 연결리스트를 배우려고 하는데..
대충 책을 훓어 봐도 도무지 개념이 안서서 질문드립니다
연결리스트의 사용 목적이 무엇인가요??
아직 제대로 공부해본게 아니여서 자세히는 모르겠지만
데이터 끼리의 연결?? 뭐 그런 의미인듯 한데..
어떠한 경우에 쓰이는 건지 연결리스트를 쓰면 어떠한점이 좋은지..
그런 개념이 전혀 없어서 좀 힘드네요..
아시는분 있으면 좀 알려주세요~
자료 구조(data structure)에서 연결 리스트는 좀 더 자세히 학습하게 될 겁니다. 자료 구조 관련 책을 찾아보면 도움이 될 겁니다.
데이터를 관리하는 방법은 두 가지, 정적 데이터 관리와 동적 데이터 관리가 있습니다.
정적 데이터는 크기가 미리 정해져 있습니다. 100명까지 저장할 수 있는 주소록 프로그램이면 100명까지만 저장할 수 있습니다. 101명부터는 저장할 수 없습니다. 이러면 사람들이 불편해하겠지요. 초창기 핸드폰을 보면 최대 저장할 수 있는 주소가 1000개, 2000개인 것도 정적 데이터 관리를 했기 때문입니다.
동적 데이터는 크기가 미리 정해져 있지 않습니다. 원하는 만큼 데이터를 연결해서 처리할 수 있습니다. 따라서 메모리만 충분하다면 1000명이 아니라 10000명이어도 주소를 처리할 수 있습니다.
정적 데이터는 크기가 정해져 있으니 처리하기 쉽습니다. 대부분 배열로 쓰겠죠. 대신 정해진 크기 이상은 쓸 수 없습니다.
동적 데이터는 크기가 정해져 있지 않고, 동적으로 데이터 노드를 추가하거나 삭제하는 작업을 해야 하니 처리가 복잡합니다. 정해진 크기가 없으므로 크기를 줄이거나 늘리는 게 쉽습니다. 대부분 상용 프로그램은 동적 데이터 관리를 사용합니다. 동적 데이터 관리를 위한 데이터 구조를 보통은 자료 구조에서 다룹니다. 연결 리스트는 자료 구조에서 항상 첫 번째로 등장합니다. 연결 리스트를 알아야 그 이후의 자료 구조를 구현하고 학습할 수 있기 때문이죠.
Person 구조체를 만들고
struct Person people[1000];
이렇게 쓸 수 있지만, 1000명만 저장할 수 있는 주소록 기능을 제공하는 스마트폰이라면 사람들이 좋아하지 않겠죠?
음악 플레이어에 저장할 수 있는 곡 목록이 최대 10000개라면 역시나 사람들이 좋아하지 않겠죠.
struct Song song[10000];
게다가 이런 정적 구조는 데이터를 1개만 저장해도 정해진 크기 1000개나 10000개를 위한 메모리 공간이 필요합니다. 저장 공간과 메모리 공간에서 모두 비효율적입니다.
그래서 보통은 동적 데이터 관리를 사용하고, 연결 리스트는 동적 데이터 관리의 기본 자료 구조입니다.
감사합니다.