编程实现线性表两种存储结构中的基本操作的实现(线性表的创建、插入、删除和查找),并设计一个主菜单完成各个功能的调用。
时间: 2024-11-05 13:24:35 浏览: 9
线性表的基本操作之顺序存储结构实现
在编程中,线性表有两种常见的存储结构:数组和链表。以下是这两种结构的基本操作实现:
**1. 数组表示的线性表**
- **创建**:通过动态内存分配创建一个固定大小的数组,并初始化元素。
```python
def create_array(size):
return [0] * size
```
- **插入**:如果数组未满,可以在指定位置插入元素,否则需要调整数组大小。
```python
def insert_array(lst, index, value):
if index < len(lst):
lst = lst[:index] + [value] + lst[index:]
else:
# 扩容操作
lst.extend([None] * (index - len(lst) + 1))
lst.append(value)
```
- **删除**:移除指定索引的元素。
```python
def delete_array(lst, index):
if 0 <= index < len(lst):
lst.pop(index)
```
- **查找**:搜索特定值的位置。
```python
def search_array(lst, value):
for i in range(len(lst)):
if lst[i] == value:
return i
return -1
```
**2. 链表表示的线性表**
- **创建**:创建一个节点并链接到下一个节点。
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
def create_linked_list():
head = Node()
head.next = None
return head
```
- **插入**:在链表头部或指定位置插入新节点。
```python
def insert_linked_list(head, index, value):
new_node = Node(value)
if index == 0:
new_node.next = head
head = new_node
else:
current = head
for _ in range(index - 1):
current = current.next
new_node.next = current.next
current.next = new_node
```
- **删除**:找到目标节点并断开其前驱节点的连接。
```python
def delete_linked_list(head, value):
current = head
if current and current.data == value:
head = current.next
del current
return
while current and current.next:
if current.next.data == value:
current.next = current.next.next
break
current = current.next
```
- **查找**:遍历链表直到找到目标或到达结尾。
```python
def search_linked_list(head, value):
current = head
while current is not None:
if current.data == value:
return current
current = current.next
return None
```
为了提供一个主菜单完成各个功能的调用,你可以设计一个简单的控制台应用,让用户输入选项并对应执行相应的操作。
```python
def main_menu():
print("请选择操作:")
print("1. 创建数组")
print("2. 插入数组")
print("3. 删除数组")
print("4. 查找数组")
print("5. 创建链表")
print("6. 插入链表")
print("7. 删除链表")
print("8. 查找链表")
# ... 然后根据用户输入调用对应的函数
if __name__ == "__main__":
main_menu()
```
阅读全文