优先级队列.c
来源:互联网 发布:软件测试的基本理论 编辑:程序博客网 时间:2024/06/08 01:37
//优先级队列
typedef struct
{
int priority;
ElemType elem;
}DataType;
typedef struct
{
DataType queue[MaxQueueSize];
int size;
}SeqPQueue;
void Initiate(SeqPQueue *Q)
{
Q->size=0;
}
int QueueNotEmpty(SeqPQueue Q)
{
if(Q.size<=0) return 0;
else return 1;
}
int QueueAppend(SeqPQueue *Q,DataType *d)
{
DataType min;
int minIndex,i;
if(Q->size<=0)
{
printf("队列已满,无法入对列!");
return 0;
}
else
{
Q->queue[Q->size]=x;
Q->size++;
return 1;
}
}
int QueueDelete(SeqPQueue *Q,DataType *d)
{
DataType min;
int minIndex,i;
if(Q->size<=0)
{
printf("队列已空,无法出队列!");
return 0;
}
else
{
min=Q->queue[0];
minIndex=0;
for(i=1;i<Q->size;i++)
{
if(Q->queue[i].priority<min.priority)
{
min=Q->queue[i];
minIndex=i;
}
}
*d=Q->queue[minIndex];
for(i=minIndex+1;i<Q->size;i++)
{
Q->queue[i-1]=Q->queue[i];
}
Q->size--;
return 1;
}
}
int QueueGet(SeqPQueue *Q,DataType *d)
{
DataType min;
inr minIndex,i;
if(Q->szie<=0)
{
printf("队列已空无数据可取!");
return 0;
}
else
{
min=Q->queue[0];
minIndex=0;
for(i=1;i<Q->size;i++)
{
if(Q->queue[i].priority<min.prioriy)
{
min=Q->queue[i];
minInde=i;
}
}
*d=Q->queue[minIndex];
return 1;
}
typedef struct
{
int priority;
ElemType elem;
}DataType;
typedef struct
{
DataType queue[MaxQueueSize];
int size;
}SeqPQueue;
void Initiate(SeqPQueue *Q)
{
Q->size=0;
}
int QueueNotEmpty(SeqPQueue Q)
{
if(Q.size<=0) return 0;
else return 1;
}
int QueueAppend(SeqPQueue *Q,DataType *d)
{
DataType min;
int minIndex,i;
if(Q->size<=0)
{
printf("队列已满,无法入对列!");
return 0;
}
else
{
Q->queue[Q->size]=x;
Q->size++;
return 1;
}
}
int QueueDelete(SeqPQueue *Q,DataType *d)
{
DataType min;
int minIndex,i;
if(Q->size<=0)
{
printf("队列已空,无法出队列!");
return 0;
}
else
{
min=Q->queue[0];
minIndex=0;
for(i=1;i<Q->size;i++)
{
if(Q->queue[i].priority<min.priority)
{
min=Q->queue[i];
minIndex=i;
}
}
*d=Q->queue[minIndex];
for(i=minIndex+1;i<Q->size;i++)
{
Q->queue[i-1]=Q->queue[i];
}
Q->size--;
return 1;
}
}
int QueueGet(SeqPQueue *Q,DataType *d)
{
DataType min;
inr minIndex,i;
if(Q->szie<=0)
{
printf("队列已空无数据可取!");
return 0;
}
else
{
min=Q->queue[0];
minIndex=0;
for(i=1;i<Q->size;i++)
{
if(Q->queue[i].priority<min.prioriy)
{
min=Q->queue[i];
minInde=i;
}
}
*d=Q->queue[minIndex];
return 1;
}
}
优先级队列的重点是优先级,级DataType除了数据本身外,多了一个元素,就是优先值。值越小,优先级越高,优先级高的先操作。个人理解,这实际上是一个顺序表多加了一个优先级的条件。
阅读全文
0 0
- C++-优先级队列
- 优先级队列.c
- C++STL优先级队列priority_queue
- 堆与优先级队列研究(C++)
- C语言实现的优先级队列
- 算法导论-优先级队列-C语言
- 【day0414 C++】优先级队列 priority_queue的使用
- c/c++优先级队列(priority_queue)
- 【C++】优先级队列的模拟实现
- 优先级队列
- 优先级队列
- 优先级队列
- 优先级队列
- 优先级队列
- 优先级队列
- 优先级队列
- 优先级队列
- 优先级队列
- Node.js入门(二)——简单读写文件
- least-2017
- 【BZOJ2242】计算器
- VIM系列一:ctags安装使用说明
- 学习笔记
- 优先级队列.c
- 进程间通信(IPC)1 ------ 管道
- linux下增加一个新的系统调用实现pstree功能
- 上传代码到github时报错Please tell me who you are
- 数据结构--顺序存储结构及抽象实现
- Windows下安装使用curl命令
- Ubuntu 配置 Go 语言开发环境(Sublime Text+GoSublime)
- Text Mining and Analytics—— 第一周学习笔记
- 实现评分的方法 jquery