우선순위 큐는 할당된 우선순위에 따라 요소가 삽입되거나 제거되는 큐입니다. 여기서 우선순위는 0~10 범위의 정수 값입니다. 여기서 0은 우선순위가 가장 높은 요소를 나타내고 10은 우선순위가 가장 높은 요소를 나타냅니다. 우선순위가 가장 높은 요소는 우선순위가 가장 낮습니다. 우선순위 대기열 구현은 두 가지 규칙을 따릅니다.
스택, 큐, 연결 목록과 같은 우선순위 큐를 구현하는 데 사용할 수 있는 다양한 데이터 구조가 있습니다. 이번 글에서는 큐 데이터 구조에 대해 설명하겠습니다. 예를 들어 우선순위 큐를 구현하는 방법에는 두 가지가 있습니다.
우선순위 큐를 구현하는 한 가지 방법은 각 우선순위에 대한 큐를 유지하는 것입니다. 각 대기열에 Front 및 Rear라는 두 개의 포인터가 있는 배열에 이러한 여러 대기열을 저장할 수 있습니다. 큐에서 Front 포인터는 큐에 요소를 삽입하는 데 사용되며 요소가 삽입될 때마다 1씩 증가합니다. 다른 포인터는 큐에서 요소를 삭제하거나 제거하는 데 사용되는 후면 포인터입니다. 요소가 삽입될 때마다 1이 대기열에서 제거됩니다. 마지막으로 두 포인터의 위치에서 대기열의 요소 수를 결정할 수도 있습니다.
참고 - 각 큐의 크기가 동일한 경우 여러 개의 1차원 배열을 만드는 대신 2차원 배열을 만들 수 있습니다.
insert(queue, data, priority) If(queue->Rear[priority] = MAX-1 AND queue->Front[priority] = 0) OR (queue->Rear[priority] +1 =queue->Front[priority]) Print Overflow End IF queue->Rear[priority - 1] = MAX-1 Set queue->Rear[priority - 1] = 0 Else Set queue->Rear[priority] = queue->Rear[priority - 1] +1 End Set queue->CQueue[priority - 1] [queue->Rear[priority - 1] = data IF queue->Front[priority - 1] = -1 Set queue->Front[priority - 1] = 0 End
delete(queue) Set flag = 0, priority = 0 While priority <= MAX-1 IF NOT queue->Front[priority] = -1 Set flag = 1 Set value = queue->CQueue[priority][queue->Front[priority]] IF queue->Front[priority] = queue->Rear[priority] Set queue->Front[priority] = queue->Rear[priority] = -1 Else IF queue->Front[priority] = MAX-1 Set queue->Front[priority] = 0 Else Set queue->Front[priority] = queue->Front[priority] + 1 End End Break End Set priority = priority + End If flag = 0 Print underflow Else Return value End
위 내용은 C/C++의 우선순위 큐 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!