设计程序建立一个顺序表,要求从键盘输入整数,并完成添加插入和删除元素功能,并将该顺序表的元素从屏幕显示出来。 设计程序创建一个单向链表,并输出链表中数据。要求:从键盘输入元素的值,并在此基础上实现元素插入、删除及按值查找的功能。
时间: 2024-02-13 18:03:17 浏览: 83
实验一 顺序表的操作、插入与删除
以下是 Python 语言的代码实现,分别实现了顺序表和单向链表的功能:
顺序表:
```python
class SeqList:
def __init__(self, size):
self.data = [None] * size # 初始化一个大小为 size 的数组
self.length = 0 # 当前元素个数
self.size = size # 数组容量
def insert(self, index, value):
if index < 0 or index > self.length:
raise IndexError('Index out of range')
if self.length >= self.size:
self.resize() # 扩容
for i in range(self.length, index, -1):
self.data[i] = self.data[i - 1] # 依次后移元素
self.data[index] = value
self.length += 1
def append(self, value):
self.insert(self.length, value)
def delete(self, index):
if index < 0 or index >= self.length:
raise IndexError('Index out of range')
for i in range(index, self.length - 1):
self.data[i] = self.data[i + 1] # 依次前移元素
self.data[self.length - 1] = None # 将最后一个元素置空
self.length -= 1
def resize(self):
self.size *= 2
new_data = [None] * self.size
for i in range(self.length):
new_data[i] = self.data[i]
self.data = new_data
def display(self):
for i in range(self.length):
print(self.data[i], end=' ')
print()
```
单向链表:
```python
class ListNode:
def __init__(self, value):
self.val = value
self.next = None
class LinkedList:
def __init__(self):
self.head = ListNode(None) # 头结点
self.length = 0
def insert(self, index, value):
if index < 0 or index > self.length:
raise IndexError('Index out of range')
p = self.head
for i in range(index):
p = p.next
new_node = ListNode(value)
new_node.next = p.next
p.next = new_node
self.length += 1
def append(self, value):
self.insert(self.length, value)
def delete(self, index):
if index < 0 or index >= self.length:
raise IndexError('Index out of range')
p = self.head
for i in range(index):
p = p.next
p.next = p.next.next
self.length -= 1
def find(self, value):
p = self.head.next
index = 0
while p:
if p.val == value:
return index
p = p.next
index += 1
return -1
def display(self):
p = self.head.next
while p:
print(p.val, end=' ')
p = p.next
print()
```
可以在主函数中进行测试:
```python
if __name__ == '__main__':
# 测试顺序表
seq_list = SeqList(5)
seq_list.append(1)
seq_list.append(2)
seq_list.append(3)
seq_list.display() # 输出:1 2 3
seq_list.insert(1, 4)
seq_list.display() # 输出:1 4 2 3
seq_list.delete(2)
seq_list.display() # 输出:1 4 3
# 测试单向链表
linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
linked_list.display() # 输出:1 2 3
linked_list.insert(1, 4)
linked_list.display() # 输出:1 4 2 3
linked_list.delete(2)
linked_list.display() # 输出:1 4 3
print(linked_list.find(4)) # 输出:1
```
希望这份代码可以帮助您完成任务。
阅读全文