实现在顺序存储结构下将线性表逆转的算法。
时间: 2024-09-23 13:09:00 浏览: 41
在顺序存储结构(如数组)下,反转一个线性表的常见算法可以分为递归和迭代两种方式。
**1. 迭代法(双指针):**
这是一种常见的、时间复杂度为O(n)的算法,通过两个指针`start`和`end`分别指向列表的起始和结束位置,然后依次交换它们指向的元素,直到`start`超过`end`。
```python
def reverse_list_iterative(lst):
start = 0
end = len(lst) - 1
while start < end:
lst[start], lst[end] = lst[end], lst[start]
start += 1
end -= 1
# 示例:
lst = [1, 2, 3, 4, 5]
reverse_list_iterative(lst)
print(lst) # 输出:[5, 4, 3, 2, 1]
```
**2. 递归法:**
递归法则是通过函数自身调用来实现,每次将列表的最后一个元素与第一个元素对换,然后递归处理剩余部分,直到列表只剩下一个元素。
```python
def reverse_list_recursive(lst, start=0, end=None):
if end is None:
end = len(lst) - 1
if start < end:
lst[start], lst[end] = lst[end], lst[start]
return reverse_list_recursive(lst, start + 1, end - 1)
else:
return lst
# 示例:
lst = [1, 2, 3, 4, 5]
reverse_list_recursive(lst)
print(lst) # 输出:[5, 4, 3, 2, 1]
```
阅读全文