动态数组返回地址

时间:2019-05-02 16:42:49

标签: c++

我必须为二进制堆树编写代码,而且我坚持将新元素添加到数组中。打印功能返回的地址,我猜不存在的数组。我不能使用向量。它必须是动态数组。这是我的作业。

void swap(int heap[], int i, int j)
{
    int temp;
    temp=heap[i];
    heap[i]=heap[j];
    heap[j]=temp;
}

void bubbleUp (int heap[], int i)
{
    if (i>1 && heap[i] > heap[i/2])
    {
        swap(heap,i,i/2);
        bubbleUp(heap,i/2);
    }
}

void add (int heap[], int value, int size)
{
    if  (size==1)
    {
        heap[size]=value;
    }
    else
    {
        int newSize=size++;
        int *temp = new int[newSize];
        for (int i=1; i<newSize-1; i++)
            temp[i]=heap[i];
        delete [] heap;
        temp[newSize-1]=value;
        int *heap = new int[newSize];
        for (int i=1; i<newSize; i++)
            heap[i]=temp[i];
        heap=temp;
        delete [] temp;
        bubbleUp(heap,newSize);
    }
}

我正在尝试使用更大的临时动态数组来帮助自己,然后将参数传递给我的主数组。我在做什么错了?

void printHeap (int heap[], int size)
{
    for (int i=1; i<size; i++)
        cout<<heap[i]<<" ";
}

int main()
{

    int var, value=0, size=1;
    int *heap = new int[size];
    while (true)
    {
        cin>>var;
        if (var==0) //add
        {
            cin>>value;
            add(heap,value,size);
            size++;
        }
        if (var==2) //print
        {
            printHeap(heap,size);
        }
        else if (var==-1) //exit
        {
            return 0;
        }
    }
}

0 个答案:

没有答案