우선 순위 큐는 우선 순위에 따라 요소의 삽입 및 삭제를 지원하는 우선 순위가 지정된 요소 모음을 저장하기 위한 추상 데이터 유형입니다. 즉, 우선 순위가 가장 높은 요소는 언제든지 제거될 수 있습니다. 우선 순위 큐는 스택, 큐, 목록 등과 같이 위치에 대해 선형 방식으로 요소를 저장하지 않습니다. 우선 순위 큐 ADT(추상 데이터 유형)는 우선 순위에 따라 요소를 저장합니다.
우선 순위 대기열은 다음 기능을 지원합니다 -
크기() − 요소의 수를 반환하므로 우선순위 큐의 크기를 계산하는 데 사용됩니다.
빈() - Priority Queue가 비어 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
Insert(element) - 우선 순위 큐에 새 요소를 삽입하는 데 사용
최소() - 연결된 키 값이 가장 작은 요소를 반환하고 Priority Queue가 비어 있으면 오류 메시지를 표시합니다.
removeMin() - min() 함수가 참조하는 요소를 제거합니다.
작업은 C++에서 첫 번째 순서로 정렬된 쌍의 우선 순위 대기열 개념을 구현하는 것입니다.
힙과 유사한 방식으로 문제를 해결할 수 있습니다. 문제를 해결하는 두 가지 방법이 있습니다.
- 최대 우선순위 또는 최대 힙
- 최소 우선순위 또는 최소 힙
힙은 노드가 특정 순서로 배열된 트리 구조입니다. 힙에는 최소 힙과 최대 힙의 두 가지 유형이 있습니다. Min heap에서는 루트 노드나 부모 노드가 자식 노드보다 작은 반면 Max heap에서는 루트 노드나 부모 노드가 자식 노드보다 큽니다.
예
입력:priorityq.push(make_pair(18, 200))입력:priorityq.push(make_pair(18, 200))priorityq.push(make_pair(29, 100))priorityq.push(make_pair(11, 400) )출력:29 100입력:priorityq.push(make_pair(10, 200))priorityq.push(make_pair(20, 100))priorityq.push(make_pair(19, 400))출력:20 100최대 우선순위(최대 힙)사전>알고리즘
StartStep 1-> main function() 정의 priority_queue> priorityq 호출 priorityq.push(make_pair(18, 200)) 호출 priorityq.push(make_pair(29, 100)) 호출 priorityq. push(make_pair(11, 400)) 쌍 설정 top =priorityq.top() top.first 및 top.secondStop 인쇄 예
#include네임스페이스 std;// main programint main() { priority_queue > priorityq; 우선순위q.push(make_pair(18, 200)); 우선순위q.push(make_pair(29, 100)); 우선순위q.push(make_pair(11, 400)); 쌍 상단 =우선순위q.top(); cout < 출력
29 100최소 우선순위(최소 힙)를 통해
알고리즘
StartStep 1-> main function() 정의 priority_queue> priorityq 호출 pq.push(make_pair(10, 200)) 호출 pq.push(make_pair(20, 100)) 호출 pq. push(make_pair(15, 400)) 쌍 설정 top =pq.top() top.first 및 top.secondStop 인쇄 예
#include네임스페이스 std;typedef pair pi;// main programint main() { priority_queue , Greater > pq; pq.push(make_pair(10, 200)); pq.push(make_pair(20, 100)); pq.push(make_pair(15, 400)); 쌍 상단 =pq.top(); cout < 출력
10 200