已知长度为n 的线性表A采用顺序存储结构,设计一个算法,使得该线性表中的数据元素按逆序重新排列。
时间: 2024-09-26 20:15:40 浏览: 65
为了将一个长度为 n 的顺序存储的线性表 A 中的数据元素按逆序重新排列,你可以使用双指针法,即从两端同时向中间遍历并交换元素。以下是递归和非递归两种简单的算法设计:
**递归方法:**
```python
def reverseSequentialListRecursively(A, start=0, end=None):
if end is None: # 如果没有指定结束位置,则默认到列表末尾
end = len(A) - 1
if start < end: # 当起始位置小于结束位置时,继续交换
A[start], A[end] = A[end], A[start] # 交换元素
reverseSequentialListRecursively(A, start + 1, end - 1) # 递归处理剩余部分
# 调用函数
reverseSequentialListRecursively(A)
```
**非递归方法(迭代):**
```python
def reverseSequentialListIteratively(A):
start = 0
end = len(A) - 1
while start < end:
A[start], A[end] = A[end], A[start] # 交换元素
start += 1
end -= 1
# 调用函数
reverseSequentialListIteratively(A)
```
这两种方法都会改变原线性表 A 的顺序,使其按逆序排列。
阅读全文