python数据结构顺序表练习题
时间: 2025-04-20 14:34:27 浏览: 26
### Python 数据结构顺序表练习题
#### 合并两个有序的顺序表
当处理两个已排序的顺序表 `a` 和 `b` 并希望创建一个新的合并后的顺序表 `c` 时,可以采用如下方法实现[^2]:
```python
class SeqList:
def __init__(self, data=None):
self.data = list(data or [])
def merge(a: 'SeqList', b: 'SeqList') -> 'SeqList':
c_data = []
i, j = 0, 0
while i < len(a.data) and j < len(b.data):
if a.data[i] <= b.data[j]:
c_data.append(a.data[i])
i += 1
else:
c_data.append(b.data[j])
j += 1
# Append remaining elements of either lists to the end.
c_data.extend(a.data[i:])
c_data.extend(b.data[j:])
return SeqList(c_data)
# Example usage
list_a = SeqList([1, 3, 5, 7])
list_b = SeqList([2, 4, 6, 8])
merged_list = merge(list_a, list_b)
print(merged_list.data) # Output should be [1, 2, 3, 4, 5, 6, 7, 8]
```
此代码片段展示了如何定义一个简单的顺序表类以及编写用于合并两个升序排列的顺序表的方法。
#### 插入元素到指定位置
另一个常见的操作是在特定索引处向顺序表中插入新项。下面是一个例子说明怎样做到这一点:
```python
def insert_at_index(lst: 'SeqList', index: int, value) -> None:
lst.data.insert(index, value)
insert_at_index(list_a, 2, 99)
print(list_a.data) # After insertion at position 2 with element 99
```
这段程序会修改原始列表,在给定的位置之前加入新的数值。
#### 删除重复元素保持原有顺序不变
有时也需要去除顺序表内的冗余条目而不改变其他成员之间的相对次序。这里提供了一种解决方案来完成这项任务:
```python
from collections import OrderedDict
def remove_duplicates_preserve_order(lst: 'SeqList'):
unique_elements = list(OrderedDict.fromkeys(lst.data))
lst.data[:] = unique_elements
remove_duplicates_preserve_order(SeqList([1, 2, 2, 3, 4, 4]))
```
上述函数利用了字典键唯一性的特性去重的同时保留首次出现各不相同的项目按原样排列的结果集。
阅读全文
相关推荐




















