본문 바로가기
반응형

Queue3

C#으로 알아보는 원형 큐(Circular Queue) 원형 큐(Circular Queue)란?원형 큐란, 큐의 일종으로 큐와 동일하게 FIFO(선입선출, First In, First Out)의 구조를 가지면서 선형이 아닌 원형으로 데이터를 저장하는 큐를 말한다. 기존 큐의 문제점인 선형으로 데이터를 쌓기 때문에 Dequeue 하는 과정에서 데이터를 꺼내오고 그다음 인덱스의 데이터들을 한 칸씩 모두 이동해야 하기 때문에 O(n)만큼의 시간 복잡도를 요구한다. 기존 큐가 선형의 구조를 가지고 있었다면 원형 큐는 원형의 구조를 가짐기존 큐는 데이터 출력 시 O(n)의 시간 복잡도를 가짐원형 큐는 데이터 출력 시 O(1)의 시간 복잡도를 가짐 원형 큐의 구성 요소front는 큐의 앞단을 의미rear는 큐의 뒷단을 의미데이터 삽입시 rear가 증가한다.데이터 출력시.. 2024. 6. 17.
C# Queue 기본 생성자로 초기화 하기 Queue를 List랑 동일하게 초기화 시키고 싶었다. 예상과는 다르게 에러가 발생. List를 초기화하는 방식처럼 Queue도 초기화 될줄 알았는데 당연하게 될줄 알았던 부분이 작동하지 않았다. List L1 = new List { 1, 2, 3 }; Queue Q1 = new Queue { 1, 2, 3 }; // error 발생 컬렉션 이니셜라이저(Collection initializers) 컬렉션 이니셜라이저를 사용하면 컬렉션 타입을 초기화할 때 하나 또는 그 이상의 요소 이니셜라이저를 지정해서 초기화 할 수 있다. 단 IEnumerable을 구현하고 적절한 시그니처가 있는 Add를 인스턴스 메서드 또는 확장 메서드로 포함해야 한다. 요소 이니셜라이저는 단순한 값, 식 또는 개체 이니셜라이저일 수.. 2023. 7. 26.
Queue vs ConcurrentQueue로 쓰레드 환경에서 테스트 Queue로 실행한 경우 thread-safe가 보장되지 않은 Queue로 큐를 선언 using System; using System.Collections.Generic; using System.Threading.Tasks; class CQ_EnqueueDequeuePeek { static void Main() { Queue cq = new Queue(); for (int i = 0; i { int localSum = 0; int localValue; while (cq.TryDequeue(out localValue)) { localSum += localValue; } outerS.. 2023. 6. 27.