⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 priority_queue.c

📁 This is a binary search tree with void* pointer in data segment in order you to search store and del
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include "priority_queue.h"priorQueue* newHeap(unsigned int qsize) {	priorQueue *p = (priorQueue*)malloc(sizeof(priorQueue));	p->heap = (heapInfo*)malloc(qsize*sizeof(heapInfo));	p->maxSize = qsize;	p->size = 0;	return p;}int Insert(heapInfo *newAction,priorQueue *p){	if(p->size >= p->maxSize) return -1;	unsigned int m = p->size;	heapInfo *h = p->heap;	while(m >= 0 && newAction->timeStamp <= h[(m-1)/2].timeStamp) { 		memcpy(&h[m], &h[(m-1)/2], sizeof(heapInfo));		m = (m-1)/2;		}	memcpy(&h[m], newAction, sizeof(heapInfo));	p->size ++;	int i=0;	for(i=0;i<p->size;i++){	  printf("%d ",h[i].timeStamp);	}	printf("\n");	return 1;}heapInfo* getMin(priorQueue *p) {	if(p->size == 0) return NULL;	return &(p->heap[0]);}heapInfo* DeleteMin(priorQueue *p){	if(p->size == 0) return NULL;	heapInfo *h = (heapInfo*)malloc(sizeof(heapInfo));	memcpy(h, &p->heap[0], sizeof(heapInfo));		unsigned int m = 0,k = 0;	while( (2*m+1 < p->size && p->heap[2*m+1].timeStamp < p->heap[p->size-1].timeStamp) ||		(2*m+2 < p->size && p->heap[2*m+2].timeStamp < p->heap[p->size-1].timeStamp)){		if(2*m+2 < p->size) {			if(p->heap[2*m+1].timeStamp < p->heap[2*m+2].timeStamp)				k = 2*m+1;			else				k = 2*m+2;		}		else		k = p->size - 1;		memcpy(&p->heap[m], &p->heap[k], sizeof(heapInfo));		m = k;	}	memcpy(&p->heap[m], &p->heap[p->size - 1], sizeof(heapInfo));	p->size --;	return h;}void printall(priorQueue *p) {	int i;	heapInfo *h = p->heap;	for(i = 0; i<p->size;i++) {		printf("Timestamp %d\n",h[i].timeStamp);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -