在无序列表类中实现线性表抽象数据类型中的其他方法:append,index,pop(),pop(index),insert,showlist()主程序定义实例,并对类中所有方法进行简单测试,保证算法正确性。
时间: 2024-09-17 09:08:42 浏览: 58
在无序列表类中,为了实现线性表的抽象数据类型,我们需要定义一些基本操作。以下是几个关键方法的描述以及简单的实现:
1. **append**: 向列表尾部添加元素。这个方法通常会检查列表长度并将其增加一,然后将新元素插入相应位置。
```python
def append(self, element):
if not self.is_empty():
self._data.append(element)
self._size += 1
else:
self._data = [element]
self._size = 1
```
2. **index**: 返回指定元素的第一个匹配项的索引。如果不存在,则返回 `None` 或报错。
```python
def index(self, element):
for i in range(self.size()):
if self.get(i) == element:
return i
return None
```
3. **pop**: 删除并返回列表末尾的元素,如果没有元素则抛出异常。
```python
def pop(self):
if self.is_empty():
raise IndexError("List is empty")
return self._data.pop()
def pop(self, index):
if self.is_empty() or index < 0 or index >= self.size():
raise IndexError(f"Invalid index: {index}")
return self._data.pop(index)
```
4. **insert**: 在指定索引处插入元素。
```python
def insert(self, index, element):
if index < 0 or index > self.size():
raise IndexError("Index out of range")
self._data.insert(index, element)
self._size += 1
```
5. **showlist**: 显示当前列表的内容。
```python
def showlist(self):
print("Current list:", self._data)
```
6. **主程序示例**:
```python
class UnorderedList:
# ... (上面定义的所有方法)
def main():
my_list = UnorderedList()
my_list.append(1)
my_list.append(2)
my_list.append(3)
print("List after appending:", my_list.showlist())
print("Index of 2:", my_list.index(2))
print("Popped element:", my_list.pop())
print("After popping:", my_list.showlist())
my_list.insert(0, 0)
my_list.insert(2, 4)
print("List after inserting:", my_list.showlist())
if __name__ == "__main__":
main()
```
运行上述代码将展示如何使用这些方法创建、操作无序列表,并验证其正确性。
阅读全文