顺序表元素逆置


设计一个高效的算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)

  1. 记录起始下标的位置
  2. 记录结束下标的位置
  3. 起始下标与结束下标的元素互换
  4. 起始位置++,结束位置–
  5. 循环以上操作,直到起始位置>=结束位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//顺序表逆置:设计一个高效的算法 将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)
#include "preset.h"

void listReverse(SqList &sql) {
int p = 0;
int q = sql.length - 1;

while (p < q) {
int temp = sql.elem[p];
sql.elem[p] = sql.elem[q];
sql.elem[q] = temp;
p++;
q--;
}
}

int main () {
SqList sql = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 10};
cout << "Current SqList: "; print(sql);
listReverse(sql);
cout << "Reverse the SqList: "; print(sql);
return 0;
}