gpt4 book ai didi

c - 在 C 中初始化数组中的元素不会插入到另一个数据结构中

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:59 26 4
gpt4 key购买 nike

我在这里用 C 语言创建了一个代码,我在其中声明并初始化了一个整数数组。我将把所有这些元素放在一个部分有序的树中。但首先,在我创建一个 heapify 函数来满足 POT 属性之前,我首先测试了 insert 函数。但是当显示所有元素时,只会显示一个元素,并不会显示我声明的数组中的所有元素。

这是我的数据结构:

typedef struct{
int arr[MAX];
int last;
}Heap;

这是我调用 initHeap() 和 insert() 的示例主函数:

int main()
{
int elems[] = {10, 20, 5, 3, 9, 16, 2, 11, 10, 1};
int x;
Heap rec;

initHeap(&rec);

for(x=0; x<MAX; x++){
insertToHeap(&rec,elems[x]);
}


getch();
return 0;
}

这是我的 initHeap():- initHeap() 用于初始化我的优先级队列以准备插入。

void initHeap(Heap *A)
{
int x;

for(x=0; x<MAX; x++){
A->arr[x]=0;
}
A->last = 0;
}

我的 insertToHeap():

void insertToHeap(Heap *A, char x)
{
if(A->last != MAX-1){
A->arr[A->last] = x;
A->last+1;
/*Function call to heapify the POT*/
}
else {
printf("\nHeap is full!\n");
}
}

这是我的显示():

void display(Heap A)
{
int x;

printf("Elements inside the heap are: \n");
for(x=0; x<MAX; x++){
printf("%d ", A.arr[x]);
}

printf("\nLast available cell: %d", A.last);
}

我还没有写 heapify 函数,因为我想在进行堆化之前先测试我的插入函数。我将我的元素插入到堆中的最后一个可用空间中。我的问题是,每当我从一个数组中插入一个元素时,显示器只会显示一个元素,而不是我存储在数组中的所有元素。

最佳答案

我认为你的 A->last = 0 应该是 A->last = x

关于c - 在 C 中初始化数组中的元素不会插入到另一个数据结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31726696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com