⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.cpp

📁 常用数据结构集体实现
💻 CPP
字号:
#ifndef QUEUE_CPP_#define QUEUE_CPP_#include "StartConv.h"template <class Object, class Container, class Compare>priority_queue<Object,Container,Compare>::priority_queue( )  : theItems( 1 ), lessThan( Compare( ) ){}template <class Object, class Container, class Compare>int priority_queue<Object,Container,Compare>::size( ) const{    return theItems.size( ) - 1;}template <class Object, class Container, class Compare>bool priority_queue<Object,Container,Compare>::empty( ) const{    return size( ) == 0;}template <class Object, class Container, class Compare>const Object & priority_queue<Object,Container,Compare>::top( ) const{    if( empty( ) )        throw UnderflowException( "Cannot top an empty priority queue" );    return theItems[ 1 ];}template <class Object, class Container, class Compare>void priority_queue<Object,Container,Compare>::push( const Object & x ){    theItems.push_back( x );    theItems[ 0 ] = x;   // initialize sentinel      // Percolate up    int hole = size( );    for( ; lessThan( theItems[ hole / 2 ], x ); hole /= 2 )        theItems[ hole ] = theItems[ hole / 2 ];    theItems[ hole ] = x;}template <class Object, class Container, class Compare>void priority_queue<Object,Container,Compare>::pop( ){    if( empty( ) )        throw UnderflowException( "Cannot pop an empty priority queue" );    int hole = 1;    int child;    Object tmp = theItems.back( ); theItems.pop_back( );    int theSize = size( );    for( ; hole * 2 <= theSize; hole = child )    {        child = hole * 2;        if( child != theSize &&                 lessThan( theItems[ child ], theItems[ child + 1 ] ) )            child++;        if( lessThan( tmp, theItems[ child ] ) )            theItems[ hole ] = theItems[ child ];        else            break;    }    if( !empty( ) )        theItems[ hole ] = tmp;}#include "EndConv.h"#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -