Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

우선순위 큐를 구현하는 C++ 프로그램

<시간/>

삽입이 한쪽 끝(뒤)에서 수행되고 삭제가 다른 끝(앞)에서 수행되는 FIFO로 구현되는 대기열입니다. 가장 먼저 입력된 요소가 먼저 삭제됩니다.

대기열 작업은

  • EnQueue(int 데이터) :후단에 삽입

  • int DeQueue() :프런트 엔드에서 삭제

그러나 우선 순위 대기열은 선입선출을 따르지 않고 각 요소가 긴급성을 기반으로 우선 순위를 갖습니다.

우선순위가 동일한 상품은 선착순으로 처리됩니다.

우선순위가 높은 항목이 우선순위가 낮은 다른 항목보다 먼저 처리됩니다.

수업 설명

Begin class Priority_Queue에는 다음과 같은 기능이 있습니다. 우선순위 큐에 우선순위와 함께 항목을 삽입하는 함수 insert():1) 큐가 비어 있는 경우 큐의 왼쪽 끝에서 데이터를 삽입합니다. 2) 대기열에 일부 노드가 있는 경우 새 노드와 우선 순위가 동일한 노드의 끝에 새 노드를 삽입하고 새 노드의 현재 우선 순위보다 낮은 우선 순위를 가진 모든 노드 앞에도 새 노드를 삽입합니다. 함수 del() 대기열에서 항목을 삭제합니다. 대기열이 완전히 비어 있으면 언더플로를 인쇄하고 그렇지 않으면 전면 요소를 삭제하고 전면을 업데이트합니다.End

예시

#include #include #include #include 네임스페이스 사용 std;struct n // 노드 선언 { int p; 정수 정보; struct n *l;};class Priority_Queue { private://앞 포인터 f를 선언하고 NULL로 초기화합니다. n *f; public:Priority_Queue() //생성자 { f =NULL; } 무효 삽입(int i, int p) { n *t, *q; t =새로운 n; t->정보 =나; t->p =p; if (f ==NULL || p p) { t->l=f; f =t; } 그렇지 않으면 { q =f; 동안 (q->l !=NULL &&q->l->p <=p) q =q->l; t->l =q->l; q->l =t; } } 무효 del() { n *t; if(f ==NULL) //큐가 null인 경우 cout<<"큐 언더플로\n"; 그렇지 않으면 { t =f; cout<<"삭제된 항목은 "<info<l; 무료(t); } } 무효 show() //인쇄 대기열 { n *ptr; ptr =f; if (f ==NULL) cout<<"대기열이 비어있습니다\n"; else { cout<<"대기열은 :\n"; cout<<"우선순위 항목\n"; while(ptr !=NULL) { cout<p<<" "<정보<l; } } }};int 메인() { int c, i, p; Priority_Queue pq; 수행//전환 작업 수행 { cout<<"1.Insert\n"; cout<<"2.삭제\n"; cout<<"3.디스플레이\n"; cout<<"4.종료\n"; cout<<"선택사항을 입력하세요 :"; 신>>c; switch(c) { case 1:cout<<"큐에 추가할 아이템 값을 입력하세요 :"; 신>>나; cout<<"우선순위를 입력하세요 :"; 신>>p; pq.insert(i, p); 부서지다; 사례 2:pq.del(); 부서지다; 사례 3:pq.show(); 부서지다; 경우 4:휴식; 기본값:cout<<"잘못된 선택\n"; } } 동안(c !=4); 반환 0;}

출력

1.Insert2.Delete3.Display4.Exit선택사항을 입력하세요 :1대기열에 추가할 항목 값을 입력하세요 :7우선순위를 입력하세요 :21.Insert2.Delete3.Display4.Exit선택사항을 입력하세요 :1추가할 항목 값을 입력하세요 대기열 :6우선순위를 입력하십시오 :11.Insert2.Delete3.Display4.Exit선택사항을 입력하십시오 :1대기열에 추가할 항목 값을 입력하십시오 :3우선순위를 입력하십시오 :31.Insert2.Delete3.Display4.Exit선택사항을 입력하십시오 :1항목 값을 입력하십시오 대기열에 추가할 항목:4우선순위를 입력하세요. :31.Insert2.Delete3.Display4.Exit선택 사항을 입력하세요.