c 簡單實現優先順序佇列

2021-06-17 00:39:49 字數 2307 閱讀 6807

優先順序佇列:

優先順序佇列 是不同於先進先出佇列的另一種佇列。每次從佇列中取出的是具有最高優先權的元素。

#include

using namespace std;

template

struct node

};  //節點實現佇列

template

class priority_queue

public:

priority_queue()     //初始化佇列,初始化乙個節點,但不用來存值

front=rear=newnode;

front->date=t();

rear->next=null;

front->index=0;

count=0;

booladd(const t &e ,int index);  //新增元素

booldel(t & e);   //出隊

int  size();

boolempty();

boolclear();

voiddisplay();

~priority_queue()

this->clear();

private:

node* front;   //頭指標

node* rear;    //尾指標

intcount;          //元素的個數

入隊constt &e :為要入隊的元素值

intindex: 為優先順序數值,先給乙個優先順序數值來決定在佇列中的位置

入隊時判斷元素的優先順序並確定元素在佇列中的位置

template

bool priority_queue::add(const t&e ,int index)

node* p=new node;

p->date=e;

p->index=index;

if(index>front->index)

p->next=front;

front=p;

count++;

returntrue;

else

if(front->next==rear)

front->next=p;

p->next=rear;

else

node*q=front;

while(index<=q->next->index)

q=q->next;

p->next=q->next;

q->next=p;

count++;

returntrue;

出隊t &e:出隊的元素

出隊時不用判斷元素的優先順序,直接從front出隊,因為入隊時已按優先順序入隊

template

bool priority_queue::del(t & e)

if(front==rear)

cout<<"隊列為空!,del失敗!"date;

node* p=front;

front=p->next;

deletep;

count--;

returntrue;

template

int priority_queue::size()

returncount;

template

bool priority_queue::empty()

if(front==rear)

returntrue;

else

returnfalse;

template

bool priority_queue::clear()

node*p=front;

node*q=null;

while(p)

q=p;

deleteq;

p=p->next;

returntrue;

template

void priority_queue::display()

if(empty())

cout<<"隊列為空,display失敗!"else

node* p=front;

cout<<"優先順序:"while(p->next)

q=p;

p=p->next;

coutcoutpriority_queueq;

q.add(10,4);

q.add(8,6);

q.add(7,5);

q.display();

inte;

q.del(e);

cout<<"出隊:"cout<<"佇列長度:"return0;

優先順序佇列的簡單實現

自動調整 namespace my template class inputiterator priority queue inputiterator first,inputiterator last c first,last public bool empty size t size public...

c 實現優先順序佇列 模板

首先我們來看佇列 佇列是一種先進先出的資料結構,它是按照元素的入隊時間順序來出隊的 而優先順序佇列是按照優先順序來進行處理,即不是將隊頭元素出隊,而是先將佇列中優先順序最高的元素出隊,我們一般借助堆來選出優先順序高的元素 堆是一種特殊的佇列,從堆中取出元素不是按照入隊順序,而是按照元素優先順序大小。...

優先順序佇列 c

優先順序佇列 typedef struct datatype typedef struct seqpqueue void initiate seqpqueue q int queuenotempty seqpqueue q else int queuedelete seqpqueue q,datat...