定义港口顺序表的存储结构,实现港口表的初始化,插入(在第i个港口前插入新港口),输出(按照位序输出所有港口信息),查找(给出某港口名字,输出港口相应信息),插入(在港口表中指定的某个港口前面插入新港口
时间: 2024-09-20 10:02:37 浏览: 36
港口顺序表可以采用数组或者链表作为其基本存储结构。这里我们假设使用数组来简化示例,因为数组提供直接的索引访问。
```python
class PortList:
def __init__(self, capacity):
"""
初始化港口顺序表,容量为整数
:param capacity: 整数,表示最大港口数量
"""
self.ports = [None] * capacity
self.size = 0
def initialize(self, port_list):
"""
初始化港口表,输入是一个列表,包含港口名称
:param port_list: 列表,每个元素代表一个港口名
"""
for i, name in enumerate(port_list):
self.insert(i, name)
def insert(self, index, new_port):
"""
在第index个港口前插入新港口
:param index: 整数,目标插入位置
:param new_port: 字符串,新港口的名字
"""
if index < 0 or index > self.size:
print("插入位置超出范围")
return
for i in range(self.size - 1, index, -1):
self.ports[i] = self.ports[i - 1]
self.ports[index] = new_port
self.size += 1
def output(self):
"""
按照位序输出所有港口信息
"""
for i in range(self.size):
print(f"港口 {i+1}: {self.ports[i]}")
def search(self, port_name):
"""
查找给定港口名字,输出相应信息
:param port_name: 字符串,港口的名字
"""
for i in range(self.size):
if self.ports[i] == port_name:
print(f"找到港口 {port_name},位于第{i+1}个位置")
break
else:
print(f"{port_name}未找到")
def insert_before(self, target_port, new_port):
"""
在港口表中指定的某个港口前面插入新港口
:param target_port: 字符串,要插入前的港口名字
:param new_port: 字符串,新插入的港口名字
"""
target_index = self.find_index(target_port)
if target_index != -1:
self.insert(target_index, new_port)
else:
print(f"{target_port}不在港口表中")
def find_index(self, port_name):
"""
找到港口名字在列表中的索引,如果没有则返回-1
:param port_name: 字符串,港口的名字
"""
for i in range(self.size):
if self.ports[i] == port_name:
return i
return -1
```
阅读全文