리스트는 말 그대로 대상을 나란히 나열한 것이다.
리스트에는 크게 두가지로 나뉜다
- 순차 리스트 => 배열을 기반으로 구현된 리스트
- 연결 리스트 => 메모리의 동적 할당을 기반으로 구현된 리스트
배열리스트과 연결 리스트는 구현 방법에 따라 나뉜 것이다.
각각의 특성을 유지하려고 구현하다보니 나뉘게 된 것이라고 한다.
위에서도 말했듯이 리스트의 가장 기본적이고 중요한 특성은 아래와 같다
"리스트 자료구조는 데이터를 나란히 저장한다. 그리고 중복된 데이터의 저장을 막지 않는다."
#1 리스트의 ADT
ADT(Abstract Data Type)은 전시간에 소개한 추상 자료형이다. 다시 말해 기능의 명세
ADT 자체는 유연하기에 기본 특성만 유지한다면 만드는 회사나 사람에 따라 얼마든지 다르게 만들거나 확장 가능하다.
(원칙적으로 리스트 ADT는 정해져있지만 기능은 많을수록 좋고 API들만 봐도 되게 다양하고 유연하다)
리스트는 나란히 저장되는 특성이 있다. 이를 바탕으로 기능들을 정의해보자
아래는 윤성우의 열혈 자료구조 책의 필자가 정의한 리스트의 ADT이다
함수의 인자에 LData는 저장 대상의 자료형 결정하기 위해 typedef로 선언한 자료형이라고한다.
위의 그림을 천천히 보면서 선언된 리스트 자료구조의 ADT를 훑어보자
눈에 띄는 건 LNext와 같은 건데 LFirst 호출 한 뒤에 두번 이상 호출 시 사용된다.
매번 리스트를 조회할 때 마다 처음부터 조회해야한다면 LNext를 호출하던걸 다시 LFirst를 호출하여 처음부터 호출가능하다. 즉, 목적에 맞게 호출가능한 것이다.
#2 유니티(C#)의 리스트
유니티에서는 C#으로 스크립트를 짜는데 여기서의 리스트 ADT 또한 다르다.
제네릭<T>으로 다양한 타입으로 유연하게 사용이 가능하다.
유니티의 리스트는 배열과 비교하면 이해하기 쉽다.
https://drehzr.tistory.com/578
https://pleasefixthebug.tistory.com/entry/unityListUsing
https://learn.microsoft.com/ko-kr/dotnet/api/system.collections.generic.list-1?view=net-7.0
'그냥 개발글 > 자료구조 이론' 카테고리의 다른 글
3-1 추상 자료형 (0) | 2023.01.09 |
---|---|
2-3 재귀의 활용 - 하노이 타워 (0) | 2023.01.07 |
2-2 재귀함수의 활용 (0) | 2023.01.07 |
2-1 함수의 재귀적 호출 (0) | 2023.01.05 |