我希望创建一个函数,它有两个参数:int element 和输入数组。我希望这个函数能够将元素参数放在数组的第一个位置,同时扩大数组一个单元,最后将输入数组放在插入元素后面。
举个例子,假设我的输入数组是{1, 2, 3},传递给函数的元素是5。输出应该为{5, 1, 2, 3}。
如何以最优的方式实现这个功能?
我提出了以下函数:
举个例子,假设我的输入数组是{1, 2, 3},传递给函数的元素是5。输出应该为{5, 1, 2, 3}。
如何以最优的方式实现这个功能?
我提出了以下函数:
void push(int el, int **arr)
{
int *arr_temp = *arr;
*arr = NULL;
*arr = (int*) malloc(sizeof(int)*(n - 1));
(*arr)[0] = el;
for(int i = 0; i < (int)n - 1; i++)
{
(*arr)[i + 1] = arr_temp[i];
}
}
这个功能能用,但是它不是我写过的最快的函数,而且它会拖慢整个程序。有没有更好的方法来实现呢?
我的猜测是做一些类似于(*arr)[1] = arr_temp
的操作,但是它没有起作用,我也不确定在C语言中是否有实现这样的可能性。
realloc
来扩大数组而无需复制每个元素(如果可能的话)。 - Tusharmalloc
的返回值进行强制类型转换。 - Carl Norum