>  기사  >  백엔드 개발  >  C/C++의 우선순위 큐 소개

C/C++의 우선순위 큐 소개

PHPz
PHPz앞으로
2023-09-13 17:21:111175검색

우선순위 큐는 할당된 우선순위에 따라 요소가 삽입되거나 제거되는 큐입니다. 여기서 우선순위는 0~10 범위의 정수 값입니다. 여기서 0은 우선순위가 가장 높은 요소를 나타내고 10은 우선순위가 가장 높은 요소를 나타냅니다. 우선순위가 가장 높은 요소는 우선순위가 가장 낮습니다. 우선순위 대기열 구현은 두 가지 규칙을 따릅니다.

  • 우선순위가 가장 높은 데이터 또는 요소는 우선순위가 가장 낮은 데이터 또는 요소보다 먼저 실행됩니다.
  • 두 요소의 우선순위가 같을 경우 목록에 추가된 순서대로 실행됩니다.

스택, 큐, 연결 목록과 같은 우선순위 큐를 구현하는 데 사용할 수 있는 다양한 데이터 구조가 있습니다. 이번 글에서는 큐 데이터 구조에 대해 설명하겠습니다. 예를 들어 우선순위 큐를 구현하는 방법에는 두 가지가 있습니다.

  • 단일 배열에서 여러 우선순위에 대한 큐를 유지합니다.

    우선순위 큐를 구현하는 한 가지 방법은 각 우선순위에 대한 큐를 유지하는 것입니다. 각 대기열에 Front 및 Rear라는 두 개의 포인터가 있는 배열에 이러한 여러 대기열을 저장할 수 있습니다. 큐에서 Front 포인터는 큐에 요소를 삽입하는 데 사용되며 요소가 삽입될 때마다 1씩 증가합니다. 다른 포인터는 큐에서 요소를 삭제하거나 제거하는 데 사용되는 후면 포인터입니다. 요소가 삽입될 때마다 1이 대기열에서 제거됩니다. 마지막으로 두 포인터의 위치에서 대기열의 요소 수를 결정할 수도 있습니다.

C/C++의 우선순위 큐 소개

참고 - 각 큐의 크기가 동일한 경우 여러 개의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제