编写一个程序,在这个程序中完成如下功能: (1)建立顺序表。 (2)在顺序表上实现插入、删除和查找操作。 (3)实现遍历输出顺序表中所有元素。 (3)实现在有序顺序表中删除其中重复的元素,要求删除有序顺序表中重复元素的操作算法时间复杂度为O (n).
时间: 2024-09-25 12:08:49 浏览: 29
为了创建一个简单的顺序表程序,我们可以使用Python语言,因为它简洁易读。我们将定义一个`SequenceList`类,包含`__init__`, `insert`, `delete`, `search`, `traverse`以及`remove_duplicates`等方法。
```python
class SequenceList:
def __init__(self):
self.data = []
# 插入操作
def insert(self, item):
self.data.append(item)
# 删除操作(从尾部开始搜索)
def delete(self, item):
try:
index = self.data.index(item)
del self.data[index]
except ValueError:
print(f"{item} not found in the list.")
# 查找操作
def search(self, item):
return item in self.data
# 遍历输出所有元素
def traverse(self):
for item in self.data:
print(item)
# 删除重复元素(利用双指针法)
def remove_duplicates(self):
if len(self.data) < 2:
return
i = 0
while i < len(self.data) - 1:
if self.data[i] == self.data[i + 1]:
del self.data[i]
else:
i += 1
# 使用示例
seq_list = SequenceList()
seq_list.insert(5)
seq_list.insert(10)
seq_list.insert(5) # 第二个5将被删除
seq_list.traverse() # 输出: 5 10
print(seq_list.search(5)) # 输出: True
seq_list.remove_duplicates()
seq_list.traverse() # 输出: 10
```
在这个例子中,我们实现了基本的顺序列表操作,并通过`remove_duplicates`函数以线性时间复杂度O(n)移除了重复元素。注意,这里删除重复元素并不保证绝对的有序,因为我们是从前往后遍历删除的,如果需要保持排序,可以在删除前先对数据进行排序。
阅读全文