数据结构之优先级队列
来源:互联网 发布:多益网络充值中心 编辑:程序博客网 时间:2024/06/06 02:26
#include<stdio.h>#define P_QueueSize 100#define DataType inttypedef struct Priority_QueueType{DataType item[P_QueueSize];int Priority[P_QueueSize];int rear;}P_QueueType;int Init_P_Queue(P_QueueType *Q);//初始化队列int In_P_Queue(P_QueueType *Q,DataType data,int P_);//入队int Out_P_Priority_Queue(P_QueueType *Q);//出队int Length_P_Queue(P_QueueType *Q);//求队长int Visit_P_Queue(P_QueueType *Q);//遍历队int main(int argc,char *argv[]){P_QueueType Queue,*address;int i,a;system("title 优先级队列测试");address = &Queue;Init_P_Queue(address);for(i=1;i<3;i++) In_P_Queue(address,i,i); for(i=1;i<7;i++) In_P_Queue(address,i+4,i); In_P_Queue(address,10,5); In_P_Queue(address,20,4); In_P_Queue(address,30,8);Visit_P_Queue(address);printf("队长为:%d\n\n",Length_P_Queue(address));printf("出队一个元素:%d\n",Out_P_Priority_Queue(address)); printf("队长为:%d\n",Length_P_Queue(address));return 0;}/******************************//*函数功能:初始化优先级队列 *//*函数参数:Q-指向队列的指针 *//*返回值:插入成功返回1 *//******************************/int Init_P_Queue(P_QueueType *Q){int i,j = P_QueueSize;Q->rear = 0;for(i=0;i<j;i++)//初始化优先级编号Q->Priority[i] = 0;return 1;}/**********************************************//*函数功能:入队 *//*函数参数:Q-指向队列的指针 ,item- 入队元素 P_优先级 *//*返回值:入队成功返回1 *//**********************************************/int In_P_Queue(P_QueueType *Q,DataType data,int P_){int i = P_QueueSize,j,m;if(Q->rear == i){printf("\n\a队列已满!");return 0;}if(P_ <= 0){printf("\n\a最高优先级为1!");return 0;}for(j=Q->rear-1;j>=0;j--){if(Q->Priority[j] <= P_) //判读是否直接追加在队尾{Q->item[Q->rear] = data;Q->Priority[Q->rear] = P_;Q->rear ++;return 0;}if( Q->Priority[j]>P_ && Q->Priority[j-1] <= P_) //判读插入位置{for(m=Q->rear;m>j;m--){Q->item[m] = Q->item[m-1];Q->Priority[m] = Q->Priority[m-1];}Q->item[j] = data;Q->Priority[j] = P_;Q->rear ++;return 1;}}if(Q->rear == 0)//队列中优先级没有高于插入数据优先级数据,执行插入 {for(m=Q->rear;m>0;m--){Q->item[m] = Q->item[m-1];Q->Priority[m] = Q->Priority[m-1];}Q->item[0] = data;Q->Priority[0] = P_;Q->rear ++;return 1;}printf("\n\a未知错误!");return 0;}/*******************************//*函数功能:出队 *//*函数参数:Q-指向队列的指针 *//*返回值:返回出队元素 *//*******************************/int Out_P_Priority_Queue(P_QueueType *Q){int i;DataType a;if(Q->rear == 0){printf("\n\a队列已空!");return 0;}a = Q->item[0];for(i=0;i<Q->rear;i++)Q->item[i] = Q->item[i+1];Q->rear --;return a;}/******************************//*函数功能:求队列长度 *//*函数参数:Q-指向队列的指针 *//*返回值:返回出队长 *//******************************/int Length_P_Queue(P_QueueType *Q){return Q->rear;}/*******************************//*函数功能:遍历队 *//*函数参数:Q-指向队列的指针 *//*返回值:返回出队长 *//*******************************/int Visit_P_Queue(P_QueueType *Q){int i;if(Q->rear == 0){printf("\n\a队列空!");return 0;}printf("\n队列数据\t优先级\n");for(i=0;i<Q->rear;i++){printf("%d\t\t",Q->item[i]);printf("%d \n",Q->Priority[i]);}return 1;}
0 0
- 数据结构之优先级队列
- Java数据结构与算法之优先级队列
- 数据结构之大小堆&&优先级队列
- 数据结构之--优先级队列(Java代码)
- 数据结构--优先级队列
- 【数据结构】堆&优先级队列
- 数据结构-优先级队列
- 数据结构-优先级队列
- 数据结构之优先级队列、堆及堆排序
- 数据结构之带优先级的队列(C语言实现)
- [Java数据结构]线性表之优先级队列PriorityQueue
- 【数据结构】优先级队列(一)
- 【数据结构】优先级队列(二)
- [数据结构]Priority_queue(优先级队列)
- 优先级队列-数据结构和算法
- 算法之优先级队列
- C++ 之优先级队列
- RabbitMQ之队列优先级
- C++11 引用叠加规则和模板参数类型推导规则
- UML——交互图
- android 的service
- .net做伪静态后提示只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 // 节中包括 System.Web
- android webView 不能上网 无法打开网页的问题
- 数据结构之优先级队列
- 用msvc2008编译qt5.4.0
- ActionScript 3.0 学习(十一) AS3 模拟接金币小游戏
- VMtools的安装
- 值得推荐的C/C++框架和库 (真的很强大)
- ML_SVM的菜鸟实现
- 综合案例:运算符的使用
- 2.开发前提
- C++11 系列文章