设计一个高效的算法,并将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)
bool reserveList(int* arr, int len) {
int left = 0, right = len - 1;//定义一个双指针
int temp = 0;//用于存储中间变量
while (left<right)
{
temp = *(arr + left);
*(arr + left) = *(arr + right);
*(arr + right) = temp;
left++; right--;
}
return true;
}
int main() {
int n;
printf("请输入数组的大小为n=:");
scanf("%d", &n);
int* arr = (int*)malloc(sizeof(n));
printf("请输入数组的元素\n");
for (int i = 0; i < n; i++)
{
scanf("%d", arr + i);
}
printf("未转置之前的数组\n");
for (int i = 0; i < n; i++)
{
printf("%d ", *(arr + i));
}
reserveList(arr, n);
printf("转置之后的数组为\n");
for (int i = 0; i < n; i++)
{
printf("%d ", *(arr + i));
}
}
王道408c语言实现2
最新推荐文章于 2024-06-28 15:02:50 发布