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

C++ 프로그램의 이중 종료 우선 순위 큐

<시간/>

이 튜토리얼에서는 C++의 집합을 사용하여 양방향 우선 순위 대기열을 만들 것입니다.

양방향 대기열을 만드는 단계를 살펴보겠습니다.

  • 원하는 이름으로 구조체를 만듭니다.

  • 집합을 사용하여 대기열에 대한 변수를 만듭니다.

  • 크기 큐의 크기를 반환하는 메서드입니다.

  • is_empty 대기열이 비어 있는지 여부를 반환하는 메서드입니다.

  • 삽입 큐에 새 요소를 삽입하는 메서드입니다.

  • 시작 큐의 왼쪽에서 요소를 반환하는 메서드입니다.

  • get_end 큐의 오른쪽에서 요소를 반환하는 메서드입니다.

  • delete_start 왼쪽에서 첫 번째 요소를 삭제하는 메서드입니다.

  • delete_end 메소드는 오른쪽에서 첫 번째 요소를 삭제합니다.

예시

코드를 봅시다.

#include <bits/stdc++.h>
using namespace std;
struct doubleEndedQueue {
   set<int> s;
   int size() {
      return s.size();
   }
   string is_empty() {
      return s.size() == 0 ? "True" : "False";
   }
   void insert(int x) {
      s.insert(x);
   }
   int get_start() {
      return *(s.begin());
   }
   int get_end() {
      return *(s.rbegin());
   }
   void delete_start() {
      if (s.size() == 0) {
         return;
      }  
      s.erase(s.begin());
   }
   void delete_end() {
      if (s.size() == 0) {
         return;
      }
      auto end = s.end();
      end--;
      s.erase(end);
   }
};
int main() {
   doubleEndedQueue d;
   cout << "is empty: " << d.is_empty() << endl;
   d.insert(1);
   d.insert(2);
   d.insert(3);
   d.insert(4);
   d.insert(5);
   cout << "is empty: " << d.is_empty() << endl;
   cout << "end: " << d.get_end() << endl;
   d.delete_end();
   cout << "end: " << d.get_end() << endl;
   cout << "start: " << d.get_start() << endl;
   d.delete_start();
   cout << "start: " << d.get_start() << endl;
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

is empty: True
is empty: False
end: 5
end: 4
start: 1
start: 2

결론

튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.