반응형
1. 링크드 리스트 (Linked List)
특징:
- 링크드 리스트는 노드의 집합으로 이루어진 데이터 구조이다. 각 노드는 데이터와 다음 노드를 가리키는 포인터를 포함하고있다.
장점:
- 크기 변동이 많은 데이터를 효율적으로 관리할 수 있다.
- 삽입과 삭제가 리스트의 중간에서도 O(1) 시간 복잡도로 가능하다.
- 앞 뒤 삭제가 삽입, 삭제가 가능하다.
단점:
- 메모리 사용량이 배열보다 크다.
- 임의의 위치에 있는 요소에 접근하려면 O(n) 시간이 소요된다. (인덱스 접근이 불가능해서 순차적으로 읽어야하기때문)
LinkedList<int> linkedList = new LinkedList<int>();
linkedList.AddLast(1);
linkedList.AddLast(2);
linkedList.AddLast(3);
foreach (var item in linkedList)
{
Console.WriteLine(item); // 출력: 1, 2, 3
}
2. 스택 (Stack)
특징:
- 스택은 LIFO(Last In, First Out) 방식으로 작동하는 데이터 구조이다.
- 주요 연산으로는 Push - 삽입, Pop -삭제, Peek -맨 위 요소 조회 등이 있다.
장점:
- O(1) 시간 복잡도를 가진다.
단점:
- 중간에 있는 데이터를 접근하려면 스택을 모두 꺼내야 한다.
Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
stack.Push(3);
Console.WriteLine(stack.Pop()); // 출력: 3
Console.WriteLine(stack.Peek()); // 출력: 2
3. 큐 (Queue)
특징:
- 큐는 FIFO(First In, First Out) 방식으로 작동하는 데이터 구조이다.
- 주요 연산으로는 Enqueue - 삽입, Dequeue -삭제, Peek -첫 번째 요소 조회 등이 있다.
장점:
- O(1) 시간 복잡도를 가진다.
단점:
- 중간에 있는 데이터를 접근하려면 큐를 모두 꺼내야 한다.
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
Console.WriteLine(queue.Dequeue()); // 출력: 1
Console.WriteLine(queue.Peek()); // 출력: 2
C#의 리스트는 배열리스트로 맨 앞에 있는걸 삭제하면 앞으로 모두 땡겨와야한다. 그렇기때문에 시간이 오래걸리는 단점이 있는데 링크드 리스트는 포인터로 연결을 하는 형식이라서 자르고 연결하면 장땡이라 삽입 삭제가 빈번한 구조일때는 링크드 리스트를 사용하는 것이 좋다. 그외는 배열보다 메모리 사용량이 커서... 리스트를 쓰는게 좋다.
오늘의 회고
오늘 특강은 자료구조에 대해서 해주셨는데 트리도 있었지만 안올리는 이유는 못올리는 것이다.
와 진짜 대학 다닐때 파일처리론에서 했던 그 트리 코딩하기가 어떻게 한개도 생각이 안날 수 가..................................
근데 다시 보면 뭐 이해라도 되어야하는데 아~ 그거~ 하면서 한개도 모르겠어서 튜터님이 코드 올려주시면 그거 바탕으로 공부를 다시 해야한다................
나는 바보다............
그리고 우선순위큐도 어제! 풀었는데 오늘!!! 알려주셔서 신기했다!!
아마 좀 더 공부를 하게 된다면 이 글에 추가를 하지않을까 싶다!
반응형
'Record > TIL' 카테고리의 다른 글
[Unity] 3D 러너게임 팀프로젝트 마무리 (Ps.일주일치고는 완벽..!) (2) | 2024.06.11 |
---|---|
[Unity] 유니티 충돌시 음악 플레이 되게하기 (+트리거) (0) | 2024.06.10 |
[Unity] UI 위에 오브젝트 표시되게 하기 (0) | 2024.06.05 |
[Unity] 3D 맵 제작 (2D 타일맵을 이용하여 제작하기) (7) | 2024.06.04 |
[Unity] 유니티 이벤트와 액션, 구독 기능 (0) | 2024.06.03 |