gpt4 book ai didi

c - 将数组发送到函数仅发送数组的第一个元素

转载 作者:行者123 更新时间:2023-11-30 15:47:05 25 4
gpt4 key购买 nike

我有一个以下结构的数组

typedef struct monom {
int coefficient;
int power;
}MONOM;

我有一个单体数组,我想将其发送到合并排序函数,当我这样做时,使用以下调用,

mergeSort(&polynomial, logSize);

只有单体数组中的第一个单体被发送到合并排序函数。

当我调试该函数时,我在调用 mergeSort 之前看到了完整的数组,但是当我继续进入 mergeSort 时,仅发送第一个元素。

这些是我的归并排序和合并,我完全一无所知:

void mergeSort(MONOM** polynomial, int size)
{
MONOM** res;
int i;

if (size < 2)
return;

else
{
mergeSort(*polynomial, size/2); // merge first half of array
mergeSort(*polynomial+(size/2),size-(size/2)); // merge second half of array

// allocate result array
res = (MONOM**)malloc(size*sizeof(MONOM*));

// merge both sorted halfs of the array into 'res'
merge(*polynomial,size/2,*polynomial+(size/2),size-(size/2),res);

// copy 'res' to 'arr'
for (i = 0; i < size; i++)
polynomial[i] = res[i];

// release unused memory
free(res);
}
}

void merge(MONOM** poly1, int n1, MONOM** poly2, int n2, MONOM** res)
{
int i1 = 0, i2 = 0;
int resIndex = 0;

while (i1 < n1 && i2 < n2)
{
if (poly1[i1]->power < poly2[i2]->power)
{
res[resIndex] = poly2[i2];
i2++;
}

else if (poly1[i1]->power > poly2[i2]->power)
{
res[resIndex] = poly1[i1];
i1++;
}

else
{
res[resIndex]->power = poly1[i1]->power;
res[resIndex]->coefficient = poly1[i1]->coefficient + poly2[i2]->coefficient;
i1++;
i2++;
}

resIndex++;
}

// fill 'res' array when one of the arrays is finished
while (i1 < n1)
{
res[resIndex] = poly1[i1];
i1++;
resIndex++;
}

while (i2 < n2)
{
res[resIndex] = poly2[i2];
i2++;
resIndex++;
}
}

最佳答案

试试这个,

mergeSort(polynomial, logSize); (Given polynomial is MONOM* or MONOM[] type)


还有

void mergeSort(MONOM* polynomial, int size)

关于c - 将数组发送到函数仅发送数组的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17730210/

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