大大们来看看吧,错哪了?貌似分配不了内存啊堆的实现
大大们来看看吧,哪里错了?貌似分配不了内存啊。堆的实现// 实现堆结构.cpp : 定义控制台应用程序的入口点。/
大大们来看看吧,哪里错了?貌似分配不了内存啊。堆的实现
// 实现堆结构.cpp : 定义控制台应用程序的入口点。
//
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define MAXSIZE 100000
struct Heap
{
int* data;
int len;
int MaxSize;
};
void InitHeap(Heap* heap)
{
heap->data=(int*)malloc(sizeof(int)*MAXSIZE);
heap->len=0;
heap->MaxSize=MAXSIZE;
}
void InsertHeap(Heap* heap,int n)
{
heap->data[heap->len]=n;
heap->len++;
}
int DelHeap(Heap* heap)
{
int temp=heap->data[0];
int count;
for(int i=0;i<heap->len;i++)
{
if(heap->data[i]<=temp)
{
temp=heap->data[i];
count=i;
}
}
for(int i=count;i<heap->len;i++)
{
heap->data[i]=heap->data[i+1];
}
heap->len--;
return temp;
}
int main()
{
Heap* heap=NULL;
InitHeap(heap);
int t;
cin>>t;
for(int i=0;i<t;i++)
{
int n;
cin>>n;
for(int j=0;j<n;j++)
{
int type,data;
cin>>type>>data;
if(type==1)
{
InsertHeap(heap,data);
}
if(type==2)
cout<<DelHeap(heap)<<endl;
}
}
return 0;
}
[解决办法]Heap* heap=NULL;
InitHeap(heap);//这里传进去是NULL,而你在InitHeap中却使用了NULL->data NULL->len...能不出错?
void InitHeap(Heap* heap)
{
heap->data=(int*)malloc(sizeof(int)*MAXSIZE);
heap->len=0;
heap->MaxSize=MAXSIZE;
}
应该Heap* heap=new Heap;
[解决办法]Heap* heap=NULL;之后直接就用了当然不行,要改为Heap* heap=(Heap*)malloc(sizeof(Heap));
[解决办法]void InitHeap(Heap* heap)
{
heap->data=(int*)malloc(sizeof(int)*MAXSIZE);
heap->len=0;
heap->MaxSize=MAXSIZE;
}
heap是null,需要申请内存