数据结构之优先队列

先看效果图:

话不多说,直接上代码!!! 

#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<time.h>
#define MAX 10
typedef struct Data {
	const char* name;
	int Weight;//权值
}*DATA,DaTA;
typedef struct Queue {
	Data* pMemory;
	int CurSize;//万金油参数
}*LPQUEUE,QUEUE;
LPQUEUE CreateQueue() {
	LPQUEUE queue = (LPQUEUE)malloc(sizeof(QUEUE));
	assert(queue);
	queue->pMemory = (DATA)malloc(sizeof(DaTA) * MAX);
	assert(queue->pMemory);
	queue->CurSize = 0;
	return queue;
}
void Push(LPQUEUE queue, DaTA data) {
	if (queue->CurSize == MAX)
		return;
	queue->pMemory[queue->CurSize++] = data;
}
void Pop(LPQUEUE queue, DATA data) {
	if (queue->CurSize == 0)
		return;
	DaTA Max = queue->pMemory[0];
	int pos = 0;
	for (int i = 0; i < queue->CurSize; i++) 
		if (queue->pMemory[i].Weight > Max.Weight) {
			Max = queue->pMemory[i];
			pos = i;
		}
	*data = Max;
	for (int i = pos+1; i < queue->CurSize; i++)
		queue->pMemory[i - 1] = queue->pMemory[i];
	queue->CurSize--;
}
bool temp(LPQUEUE queue) {
	return queue->CurSize == 0;
}
int main() {
	srand((unsigned)time(NULL));
	LPQUEUE queue = CreateQueue();
	DaTA TempData;
	DaTA array[5] = {
		"冠西",rand() % 50,
	    "一凡",rand() % 50,
		"志翔",rand() % 50,
		"冰冰",rand() % 50,
		"俊洁",rand() % 50
	};
	for (int i = 0; i < 5; i++)
		Push(queue, array[i]);
	printf("VIP等级\t用户\n");
	while (!temp(queue)) {
		Pop(queue, &TempData);
		printf("%d\t%s\n", TempData.Weight, TempData.name);
	}
	return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值