- 浏览: 768749 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
PQueue.h
PQueue.cpp
#ifndef PQUEUE_H #define PQUEUE_H #include<assert.h> #include<iostream> #include<stdlib.h> using namespace std; const int DefaultPQSize=50; template<typename T> class PQueue{ public: PQueue(int sz=DefaultPQSize); ~PQueue(){ delete[] pqelements; } bool Insert(const T& x); bool RemoveMin(T& x); bool getFront(T& x)const; void makeEmpty(){count=0;} bool IsEmpty()const{ return count==0?true:false; } bool IsFull()const{ return count==maxSize?true:false; } int getSize()const{ return count; } friend ostream& operator<<(ostream& os,PQueue& pq){ for(int i=0;i<pq.count;i++){ os << pq.pqelements[i] << " "; } os << endl; return os; } protected: T * pqelements; int count;//当前元素个数 int maxSize; void adjust(); }; template<typename T> PQueue<T>::PQueue(int sz):count(0),maxSize(maxSize) { pqelements = new T[sz]; assert(NULL!=pqelements); } template<typename T> bool PQueue<T>::Insert(const T &x) { if(IsFull()){ return false; } pqelements[count++]=x; adjust(); } /* 将最新插入的结点放到合适的位置,相当于排序 */ template<typename T> void PQueue<T>::adjust() { T last = pqelements[count-1]; int j; for(j=count-2;j>0;j--){ if(pqelements[j]<=last){ break; }else{ pqelements[j+1] = pqelements[j]; } } pqelements[j+1]=last; } template<typename T> bool PQueue<T>::RemoveMin(T &x) { if(IsEmpty()){ return false; }else{ for(int i=1;i<count;i++){ pqelements[i-1] = pqelements[i]; } } count--; return true; } template<typename T> bool PQueue<T>::getFront(T &x) const { if(IsEmpty()){ return false; } x = pqelements[0]; return true; } #endif // PQUEUE_H
PQueue.cpp
#include"PQueue.h" int main() { PQueue<int> pq; int num=1; for(int i=0;i<10;++i){ pq.Insert(num++); } cout << pq; pq.RemoveMin(num); cout << pq; pq.makeEmpty(); cout << pq; } 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10
发表评论
-
时间复杂度推导
2012-06-05 22:57 9831.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次 ... -
数据结构概论2
2012-06-04 22:19 809数据元素:组成数据的,有一定意义的基本单位,在计算机中通常作为 ... -
排序概念
2011-06-24 14:51 789数据表:待排序数据元素的有很集合 排序码:通常数据元素有多个 ... -
图的基本概念
2011-06-20 16:18 750完全图:n个顶点,n*(n-1)/2个边的无向图,就是无向完全 ... -
红黑树
2011-06-16 14:29 516红黑树: 1.根结点和所有的叶结点都是黑色 2.从根结点到叶结 ... -
链表反转
2011-06-12 18:03 1101template<typename T> v ... -
散列表(哈希表)
2011-06-09 09:55 1081散列表(hash table):是表示集合和字典的另一种有效方 ... -
跳 表
2011-06-08 11:12 805#ifndef SKIPLIST_H #define S ... -
字 典
2011-06-08 10:06 926字典:以集合为基础,并支持支持Member,Insert和Re ... -
LinkedSet
2011-06-07 13:08 925改了很久的bug #ifndef LINKEDSET_H ... -
bitset
2011-06-06 12:27 886bitSet.h #ifndef BITSET_H #d ... -
Huffman树
2011-06-02 11:06 917Huffman树,又称最优二叉树,是一类加权路径长度最短的二叉 ... -
堆
2011-06-02 09:19 952在优先级队列的各种实现中,堆是最高效的一种数据结构 关键码: ... -
森 林
2011-06-01 11:09 602森林与二叉树互转,主要是子结点转左子树,兄弟结点转右子树 深 ... -
二叉树的链式实现
2011-05-31 11:24 1265binaryTree.h #ifndef LINKEDBI ... -
二叉树基本概念
2011-05-30 10:05 844一棵二叉树的结点的一个有限集合:该集合或者为空,或者是由一个根 ... -
树基本概念
2011-05-30 09:28 894结点(node):包含数据项及指向其他结点的分支。 结点的度( ... -
广义表
2011-05-27 10:57 936广义表的定义是递归的,因为在表的描述中又用到了表,允许表中有表 ... -
矩阵相关
2011-05-26 10:22 932矩阵:是一个具有m行n列的二维数组。 上三角矩阵:只存储对角 ... -
链式队列
2011-05-20 12:05 829LinkedQueue.h #ifndef LINKEDQ ...
相关推荐
使用顺序存储实现优先级队列,展示优先级队列和普通队列的区别之处。
优先级队列是一种特殊的数据结构,它按照优先级顺序存储元素,最高优先级的元素总是在队列的前端。在计算机科学中,堆通常被用来实现优先级队列。堆是一种完全二叉树,其中每个父节点的值都大于或等于(最大堆)或...
优先级队列是一种特殊的线性数据结构,它在处理元素时遵循特定的优先级规则,通常最高优先级的元素会被最先处理。在Java中,优先级队列是通过`java.util.PriorityQueue`类来实现的,它基于一个二叉堆(Binary Heap)...
优先级队列cpp文件PriorityQueue.cpp
dheap(插入元素)、pop_max_dheap(删除最大元素)、pop_min_dheap(删除最小元素),is_dheap(堆验证)五个泛型算法,在此基础上实现了一个能在对数时间内获取最大和最小元素的优先级队列,相当于原stl优先级队列...
算法中优先级队列问题...用堆排序的算法来做的例子
数据结构与算法之优先级队列 优先级队列(Priority Queue)是一种特殊的队列,它不同于一般的先进先出队列,而是每次从队列中取出的是具有最高优先权的元素。优先级队列的实现方式有多种,可以基于有序顺序表、无序...
优先级队列的设计和实现 在计算机科学中,数据结构是一个非常重要的概念,它直接影响着算法的效率和程序的可读性。其中,优先级队列是一种特殊的数据结构,它支持对数据对象的优先级访问和操作。本章将对优先级队列...
用c语言实现的,简单易懂,希望对大家有用。
数据结构课设——小大根交替堆实现的双端优先级队列及应用 小大根交替堆是一种特殊的堆结构,它可以同时满足大根堆和小根堆的性质。在本文中,我们将对小大根交替堆实现的双端优先级队列进行详细的分析和设计。 ...
在毕业设计中,MATLAB 被广泛应用于各种科学计算和数据分析任务,而优先级队列(Priority Queue)是数据结构中的一个重要概念,它在许多算法和应用中扮演着核心角色。优先级队列通常不直接内置在MATLAB中,但可以...
使用c++模板实现的堆排序、优先级队列,在vs2010下编译运行通过。压缩文件里为两个工程文件,如果有vs2010的话解压缩打开sln文件就可以了,没有的话,新建工程将文件复制过去就ok了。如果有问题可以留言。
优先级队列是一种特殊的数据结构,它在处理数据时遵循“优先级”原则,即具有较高优先级的元素会先于低优先级的元素被处理。在计算机科学中,优先级队列通常用于调度任务、事件处理和其他需要快速访问最高优先级元素...
在"os.rar_优先级 队列"这个主题中,我们将深入探讨操作系统如何利用优先级队列来管理进程,确保高效和公平地执行任务。 首先,进程是操作系统中运行的程序实例。在多任务环境中,操作系统需要决定哪个进程应该获得...
"优先级队列" 在数据结构中,优先级队列是一种特殊的队列,队列中的每个元素都有一个优先级,队列的出队顺序是按照元素的优先级从高到低的顺序。优先级队列可以用来解决许多实际问题,如任务调度、资源分配等。 本...