5-26 Windows消息队列
来源:互联网 发布:java 重载的意义 编辑:程序博客网 时间:2024/04/25 15:40
#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXN 100000#define MAXS 10typedef struct node{ char s[MAXS+1]; int num;}Message;typedef struct Node{ Message *Element; int size;}*MinHeap;MinHeap Intial(){ MinHeap H; H=malloc(sizeof(struct Node)); H->Element=malloc(sizeof(Message)*MAXN); H->size=-1; return H;}void Insert(MinHeap H,Message item){ int i; if(H->size==-1) { ++H->size; strcpy(H->Element[H->size].s,item.s); H->Element[H->size].num=item.num; } else { ++H->size; i=H->size; for(;i>0&&H->Element[(i-1)/2].num>item.num;i=(i-1)/2) { strcpy(H->Element[i].s,H->Element[(i-1)/2].s); H->Element[i].num=H->Element[(i-1)/2].num; } strcpy(H->Element[i].s,item.s); H->Element[i].num=item.num; }}void Delete(MinHeap H){ int parent,child; Message temp; if(-1==H->size) { printf("EMPTY QUEUE!\n"); return; } printf("%s\n",H->Element[0].s);//输出堆的根节点 strcpy(temp.s,H->Element[H->size].s); temp.num=H->Element[H->size--].num; for(parent=0;(parent*2+1)<=H->size;parent=child) { child=2*parent+1; if((child<H->size)&&H->Element[child].num>H->Element[child+1].num) child++; if(temp.num<=H->Element[child].num) break; else { strcpy(H->Element[parent].s,H->Element[child].s); H->Element[parent].num=H->Element[child].num; } } strcpy(H->Element[parent].s,temp.s); H->Element[parent].num=temp.num;}int main(){ int N,i; MinHeap H=Intial();//创建一个空的最小堆 Message X; char s[4]; scanf("%d",&N); for(i=0;i<N;i++) { scanf("%s",s); if(strcmp("PUT",s)==0)//如果是PUT则插入 { scanf("%s %d",X.s,&X.num); Insert(H,X); } else//否则删除最小堆得堆顶元素,然后调整堆,保证删除后仍然是最小堆 Delete(H); } return 0;}
0 0
- 5-26 Windows消息队列
- 5-26 Windows消息队列
- 5-26 Windows消息队列 (25分)
- PTA-数据结构 5-26 Windows消息队列 (25分)
- Windows消息【一】 消息队列
- windows消息和消息队列
- windows消息和消息队列
- windows消息和消息队列
- windows消息和消息队列
- windows消息和消息队列
- windows消息和消息队列
- windows消息和消息队列
- windows消息和消息队列
- Windows消息和消息队列
- 5-2 Windows消息队列 (25分)
- Windows消息队列
- windows消息队列
- windows消息队列
- SG函数 Alice and Bob
- 安卓逆向学习第一天
- 定时任务 中的job中注入的service接口 为空 解决方法
- hdu 4301 Divide Chocolate (dp )
- hdu2063 过山车--最大匹配数 & 匈牙利
- 5-26 Windows消息队列
- Retrofit2简单使用初试用
- MySQL的存储过程
- Material Design系列,自定义Behavior之上滑显示返回顶部按钮
- java读取properties文件的方法
- json
- Android Studio导入Project、Module的正确方法
- hdu 3631
- EMV规范(四)——读应用数据