Cách triển khai hàng đợi ưu tiên trong C ++



Bài viết này sẽ cung cấp cho bạn kiến ​​thức chi tiết và toàn diện về cách triển khai hàng đợi priorit trong C ++ kèm theo các ví dụ.

Hàng đợi ưu tiên là một vùng chứa trong STL. Nó tương tự như hàng đợi ngoại trừ thực tế là mỗi phần tử của hàng đợi ưu tiên có mức độ ưu tiên nhất định và khi chúng ta bật các phần tử từ hàng đợi ưu tiên, các phần tử có mức độ ưu tiên cao nhất sẽ được xuất hiện trước. Giống như hàng đợi ưu tiên, có 10 loại vùng chứa khác nhau trong STL . Vùng chứa là một đối tượng lưu trữ dữ liệu. Các vùng chứa STL được triển khai với sự trợ giúp của các lớp mẫu do đó dễ dàng tùy chỉnh nó để chứa các loại dữ liệu khác nhau. Trong bài đăng này, chúng ta sẽ thảo luận chi tiết về Hàng đợi ưu tiên và các khái niệm liên quan đến nó. Các con trỏ sau sẽ được đề cập trong Hàng đợi Ưu tiên trong bài viết C ++ này,

đặt đường dẫn lớp cho java

Tiếp tục với bài viết này về Hàng đợi ưu tiên trong C ++





Các thành phần của STL

STL bao gồm các lớp mẫu và các hàm có thể được sử dụng như một phương pháp tiếp cận tiêu chuẩn để lưu trữ và xử lý dữ liệu. Hãy thảo luận về các thành phần của STL

Hộp đựng- Có 10 loại container được định nghĩa trong STL và chúng được nhóm thành 3 loại. Trong số 3 hàng này, hàng đợi Ưu tiên thuộc về loại của vùng chứa dẫn xuất. Mỗi lớp vùng chứa có bộ hàm riêng có thể được sử dụng để thao tác dữ liệu.



Thuật toán - Thuật toán là một phương pháp dùng để xử lý dữ liệu có trong đối tượng container. STL cung cấp nhiều loại Thuật toán khác nhau có thể được sử dụng để khởi tạo, tìm kiếm, sắp xếp, hợp nhất, sao chép. Các thuật toán được thực hiện với sự trợ giúp của các hàm mẫu.

Trình lặp lại- Trình lặp là một đối tượng trỏ tới một phần tử trong vùng chứa. Trình lặp có thể giúp sử dụng trong việc di chuyển qua nội dung của một vùng chứa. Các trình lặp giống như các con trỏ có thể được tăng và giảm. Nó hoạt động như một liên kết giữa thuật toán và vùng chứa. Các trình lặp được sử dụng để thao tác dữ liệu được lưu trữ trong một vùng chứa.

Tiếp tục với bài viết này về Hàng đợi ưu tiên trong C ++



Hàng đống và hàng đợi ưu tiên

Như chúng ta đã thấy trước đó Hàng đợi ưu tiên thuộc về danh mục các vùng chứa dẫn xuất. Các thành viên khác của danh mục này là ngăn xếp và hàng đợi. Những vùng chứa có nguồn gốc này còn được gọi là bộ điều hợp vùng chứa.

Ngăn xếp, hàng đợi và hàng đợi ưu tiên được gọi là vùng chứa dẫn xuất vì chúng được tạo từ các vùng chứa trình tự khác nhau. Các vùng chứa này không hỗ trợ bất kỳ loại trình vòng lặp nào mà chúng không được sử dụng để thao tác dữ liệu.

Chính xác thì hàng đợi ưu tiên là gì?

Nói một cách đơn giản, nó là một vùng chứa mà chúng ta đã sử dụng để lưu trữ dữ liệu. Mỗi phần tử của dữ liệu được lưu trữ được chỉ định một số mức độ ưu tiên có thể giúp chúng ta lưu trữ dữ liệu theo một thứ tự hợp lý.
Cú pháp:tên_biến_đầu_quốc

Điều quan trọng là phải đưa tệp tiêu đề vào chương trình để sử dụng hàng đợi ưu tiên.

hàng đợi ưu tiên trong c ++Ví dụ: nếu chúng ta thêm 2, 10, 30, 5, 6 trong hàng đợi ưu tiên của mình bằng cách sử dụng hàm push và sau đó bật các phần tử bằng hàm pop, đầu ra sẽ là 30, 10, 6, 5, 2.

lập trình socket tcp trong java

Được rồi, giờ chúng ta đã biết mục đích hoặc việc sử dụng hàng đợi ưu tiên. Nhưng làm thế nào nó biết nếu 30> 10? Nó đang thực hiện một số loại sắp xếp? Tại thời điểm này, Heaps đi vào hình ảnh. Để tìm hiểu chi tiết về heap, hãy tham khảo bài viết này.

Heaps- Heaps là cấu trúc giống như cây. Dựa trên cách các nút phần tử con được sắp xếp trong một heap so với các nút cha, heap được chia thành 2 phần

một. Min Heap- Trong Min Heap, giá trị của nút cha nhỏ hơn hoặc bằng giá trị của các nút con.

2. Max Heap- Trong Max Heap, giá trị của nút cha lớn hơn hoặc bằng giá trị của các nút con.

Ghi chú- Hàng đợi ưu tiên không sắp xếp các phần tử bằng cách sử dụng một số thuật toán sắp xếp thay vào đó nó lưu trữ dữ liệu dưới dạng một đống.

Tiếp tục với bài viết này về Hàng đợi ưu tiên trong C ++

In tất cả các phần tử của hàng đợi ưu tiên

Sau khi hiểu các nguyên tắc cơ bản về hàng đợi ưu tiên, hãy triển khai các chương trình để hiểu các phương pháp được sử dụng phổ biến nhất với hàng đợi ưu tiên

#include #include using namespace std int main () {priority_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) trong khi (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Đầu ra:

30 15 10 9 6 2

Trong chương trình trên, chúng tôi đã sử dụng các hàm pop (), top () và push () được sử dụng hầu hết trong khi xử lý hàng đợi ưu tiên. Hãy xem xét một số phương pháp mà chúng ta có thể sử dụng với hàng đợi ưu tiên

kích thước( ): Hàm này Trả về kích thước của Hàng đợi Ưu tiên

trống( ): Hàm này được sử dụng để kiểm tra xem hàng đợi ưu tiên có trống hay không. Nó trả về true của hàng đợi ưu tiên trống.

đẩy( ): Chèn một phần tử vào Hàng đợi Ưu tiên.

pop (): Hàm này loại bỏ phần tử trên cùng của hàng đợi ưu tiên là phần tử có mức ưu tiên cao nhất.

swap (): Hàm này hoán đổi các phần tử của hàng đợi ưu tiên với một hàng đợi ưu tiên khác. Hàm nhận một hàng đợi ưu tiên làm tham số.

đặt đường dẫn lớp trong linux

emplace (): Hàm này được sử dụng để thêm một phần tử vào đầu hàng đợi ưu tiên.

Hãy xem xét một chương trình khác.

#include #include using namespace std int main () {priority_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) trong khi (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Đầu ra:

2 6 7 9 10 15 30

Với điều này, chúng ta sẽ kết thúc bài viết Hàng đợi Ưu tiên này trong C ++. Nếu bạn muốn tìm hiểu thêm, hãy xem bởi Edureka, một công ty học trực tuyến đáng tin cậy. Khóa học đào tạo và cấp chứng chỉ Java J2EE và SOA của Edureka được thiết kế để đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.