| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1330 人关注过本帖
标题:求大大帮助,用heap来实现priority queue
只看楼主 加入收藏
van233333
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-4-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
求大大帮助,用heap来实现priority queue
数据结构是长这样的。
struct thing{
  int priority;
  int item;
};

struct pq{
  struct thing **array;
  int len;
};
求问insert 和 remove怎么写。。。。
搜索更多相关主题的帖子: insert 
2016-04-05 03:50
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
收藏
得分:10 
你是想用 堆写队列?

好好学习,天天向上!
2016-04-05 11:08
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:10 
写队列的话出了一个数组和数组总长度,他还需要两个指针,分别指向队列头和尾。我习惯了把这两个指针封装在结构体里面。如果强制要求结构体就那两个数据,那你一定要解决好这两个指针的传递问题。很关键。
你要的代码我不知道怎么写,但我正好做有一份一份作业,是队列的基本操作集,你可以把
程序代码:
#include <stdlib.h>
#include <stdio.h>
/*
*/
typedef struct node *Queue;
typedef int ElementType;//这里的int可以换成你的那个结构体,
struct node{
    ElementType *a;
    int front;
    int rear;
    int MaxSize;
};
Queue CreatQueue(int MaxSize);
int IsFullQ(Queue Q,int MaxSize) ;
void AddQ(Queue Q,ElementType item);
int IsEmptyQ(Queue Q);
ElementType DeleteQ(Queue Q);

int main(){

Queue Q=CreatQueue(10);
for(int i=0;i<99;i++){
    IsFullQ(Q,10);
    AddQ(Q,i);

}
printf("\n----\n");
for(int i=0;i<10;i++){
    printf("%d ",Q->a[i]);
}


return 0;
}

Queue CreatQueue(int MaxSize){
    Queue Q=(Queue)malloc(sizeof(struct node));
    Q->a=(ElementType*)malloc(sizeof(ElementType)*MaxSize);
    Q->front=0;
    Q->rear =-1;
    return Q; 

}
int IsFullQ(Queue Q,int MaxSize){
    return (Q->front+MaxSize==Q->rear);
}
void AddQ(Queue Q,ElementType item){
if(Q->front+Q->MaxSize<=Q->rear){
    printf("空间已满,插入失败");
    return;

}Q->a[++Q->rear%Q->MaxSize]=item;
}
int IsEmptyQ(Queue Q){
    return (Q->front ==Q->rear);
}
ElementType DeleteQ(Queue Q){
    if(IsEmptyQ(Q)){
        printf("队列已空,读取失败");
        return -1;
    }
    return Q->a[++Q->front%Q->MaxSize];
}


φ(゜▽゜*)♪
2016-04-05 11:16
快速回复:求大大帮助,用heap来实现priority queue
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016312 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved