實現優先順序佇列的 C++ 程式
佇列作為 FIFO 實現,其中插入操作在端(後端)進行,刪除操作在另一端(前端)進行。第一個進入元素首先被刪除。
佇列操作是
EnQueue (int data):在後端進行插入
int DeQueue():從前端進行刪除
但是優先順序佇列不遵循先進先出,而是根據緊急性的基礎每個元素都具有一個優先順序。
具有相同優先順序的專案根據先進先出服務基礎進行處理。
具有更高優先順序的專案在具有較低優先順序的其他專案之前進行處理。
類描述
Begin class Priority_Queue has following functions: function insert() to insert items at priority queue with their priorities: 1) If queue is empty insert data from the left end of the queue. 2) If queue is having some nodes then insert the new node at the end of those nodes having priority same with the new node and also before all the nodes having priority lesser than the current priority of the new node. function del() to delete items from queue. If queue is completely empty, print underflow otherwise delete the front element and update front. End
示例
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
struct n // node declaration {
int p;
int info;
struct n *l;
};
class Priority_Queue {
private:
//Declare a front pointer f and initialize it to NULL.
n *f;
public:
Priority_Queue() //constructor {
f = NULL;
}
void insert(int i, int p) {
n *t, *q;
t = new n;
t->info = i;
t->p = p;
if (f == NULL || p < f->p) {
t->l= f;
f = t;
} else {
q = f;
while (q->l != NULL && q->l->p <= p)
q = q->l;
t->l = q->l;
q->l = t;
}
}
void del() {
n *t;
if(f == NULL) //if queue is null
cout<<"Queue Underflow\n";
else {
t = f;
cout<<"Deleted item is: "<<t->info<<endl;
f = f->l;
free(t);
}
}
void show() //print queue {
n *ptr;
ptr = f;
if (f == NULL)
cout<<"Queue is empty\n";
else {
cout<<"Queue is :\n";
cout<<"Priority Item\n";
while(ptr != NULL) {
cout<<ptr->p<<" "<<ptr->info<<endl;
ptr = ptr->l;
}
}
}
};
int main() {
int c, i, p;
Priority_Queue pq;
Do//perform switch opeartion {
cout<<"1.Insert\n";
cout<<"2.Delete\n";
cout<<"3.Display\n";
cout<<"4.Exit\n";
cout<<"Enter your choice : ";
cin>>c;
switch(c) {
case 1:
cout<<"Input the item value to be added in the queue : ";
cin>>i;
cout<<"Enter its priority : ";
cin>>p;
pq.insert(i, p);
break;
case 2:
pq.del();
break;
case 3:
pq.show();
break;
case 4:
break;
default:
cout<<"Wrong choice\n";
}
}
while(c != 4);
return 0;
}輸出
1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 1 Input the item value to be added in the queue : 7 Enter its priority : 2 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 1 Input the item value to be added in the queue : 6 Enter its priority : 1 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 1 Input the item value to be added in the queue : 3 Enter its priority : 3 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 1 Input the item value to be added in the queue : 4 Enter its priority : 3 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 3 Queue is : Priority Item 1 6 2 7 3 3 3 4 1.Insert 2.Delete 3.Display 4.Exit Enter your choice : 4
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP