728x90
- 연결리스트(Linked List)
- 단순 연결 리스트(Singly Linked List) : 모든 데이터 타입을 가져올 수 있음
- ArrayList는 중간에 데이터를 추가/삭제 시 맨 뒤에 새로운 칸을 생성 후 한 칸씩 밀어내서 작업(시간이 오래걸림)
- Linked List는 중간에 데이터를 바로 추가/삭제 할 수 있기 때문에 작업이 빠름
- 추가 데이터에 대한 연산 불필요, 구현의 어려움, 탐색 연산의 비용이 높음
- 이중 연결리스트(Doubly Linked List)
- 양방향 탐색이 가능
- 노드에 이전 노드와 다음 노드를 가리키는 포인터를 가지고 있다.
LinkedList<int> number = new LinkedList<int>();
number.AddFirst(10); //10
number.AddLast(20); //10, 20
number.AddLast(30); //10, 20, 30
number.AddFirst(9); //9, 10, 20, 30
//노드 찾기
LinkedListNode<int> nodeTemp = number.Find(20);
number.AddAfter(nodeTemp, 21);
number.AddBefore(nodeTemp, 19);
//삭제
number.Remove(10);
//검색
for(var node = number.First; node != null; node = node.Next)
{
Console.WriteLine(node.Value);
}
- 원형 연결리스트(Doubly Circular Linked List)
- 처음과 마지막 노드를 서로 연결
- 마지막 노드의 Next는 첫번째 노드를 가리키고 있음
- 첫번째 노드의 Previous는 마지막 노드를 가리키고 있음
ArrayList, List<T> | LinkedList<T> |
- 데이터 검색에 유리 - 데이터 추가/삭제가 느림 |
- 데이터 추가/삭제가 빠름 - 데이터 검색이 느림(처음부터 탐색해야 하기 때문) |
728x90
'게임 프로그래밍 > C#' 카테고리의 다른 글
C# 선형 자료구조 - 큐(Queue) (0) | 2021.12.26 |
---|---|
C# 선형 자료구조 - 스택(Stack) (0) | 2021.12.26 |
C# 선형 자료구조 - 리스트(List, ArrayList, LinkedList) (0) | 2021.12.25 |
C# 선형 자료구조 - 배열 (1) | 2021.12.25 |
C# 자료구조 Data Structure (0) | 2021.12.25 |