C++语言:只能输入列表和整数k,删除列表倒数第k个元素并将新列表原地翻转后输出
时间: 2024-05-04 20:15:46 浏览: 15
可以使用双指针来实现。首先定义两个指针,一个指向开头,一个指向第 k+1 个元素。然后同时移动两个指针,直到第二个指针到达列表末尾。此时,第一个指针的位置就是要删除的元素的位置。然后将该元素从列表中删除,并将列表原地翻转后输出即可。
以下是代码示例:
```c
#include <stdio.h>
int main() {
int n, k;
printf("请输入列表长度n和要删除的倒数第k个元素:");
scanf("%d %d", &n, &k);
// 定义列表
int list[n];
printf("请输入列表元素:");
for (int i = 0; i < n; i++) {
scanf("%d", &list[i]);
}
// 双指针实现删除
int i = 0, j = k;
while (j < n) {
i++;
j++;
}
// 删除第i个元素
for (int p = i; p < n - 1; p++) {
list[p] = list[p + 1];
}
n--;
// 原地翻转
for (int p = 0; p < n / 2; p++) {
int temp = list[p];
list[p] = list[n - p - 1];
list[n - p - 1] = temp;
}
// 输出新列表
printf("删除倒数第%d个元素,并原地翻转后的新列表为:\n", k);
for (int i = 0; i < n; i++) {
printf("%d ", list[i]);
}
return 0;
}
```