写出在顺序存储结构下将线性表逆转的算法要求使用最少的附加空间。要求输入长度为n的线性表数据组A(1:n),输出逆转后的长度为n的线性表数据组A(1:n)(ET为数据元素的类型)。。。
时间: 2024-02-21 10:57:25 浏览: 77
算法如下:
1. 定义两个指针,一个指向表头,一个指向表尾。
2. 从表头开始,依次将每个元素与表尾元素交换。
3. 每次交换完后,表头指针向后移动一位,表尾指针向前移动一位,直到两个指针相遇或者交叉。
4. 完成逆转。
代码实现如下:
```
void reverse(ET A[], int n){
int i, temp;
for(i = 0; i < n/2; i++){
temp = A[i];
A[i] = A[n-i-1];
A[n-i-1] = temp;
}
}
```
该算法的空间复杂度为O(1),只需要常量级的附加空间,符合题目要求。
相关问题
写出在顺序存储结构下将线性表逆转的算法要求使用最少的附加空间,要求输入长度为n的线性表数据组。
算法如下:
1. 定义两个指针,一个指向表头,一个指向表尾。
2. 从表头开始,依次将每个元素与表尾元素交换。
3. 每次交换完后,表头指针向后移动一位,表尾指针向前移动一位,直到两个指针相遇或者交叉。
4. 完成逆转。
代码实现如下:
```
void reverse(int a[], int n){
int i, temp;
for(i = 0; i < n/2; i++){
temp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = temp;
}
}
```
该算法的空间复杂度为O(1),只需要常量级的附加空间,符合题目要求。
写出在顺序存储结构下将线性表逆转的算法要求使用最少的附加空间。要求输入长度为n的线性表数据组。
算法如下:
1. 定义两个指针,一个指向表头,一个指向表尾。
2. 从表头开始,依次将每个元素与表尾元素交换。
3. 每次交换完后,表头指针向后移动一位,表尾指针向前移动一位,直到两个指针相遇或者交叉。
4. 完成逆转。
代码实现如下:
```
void reverse(int a[], int n){
int i, temp;
for(i = 0; i < n/2; i++){
temp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = temp;
}
}
```
该算法的空间复杂度为O(1),只需要常量级的附加空间,符合题目要求。
阅读全文