1、编写一组程序,基于单链表,用头插法建表,实现两个寝室学生姓名数据的建 表、展示、查找、定位、插入、删除、判定表空和求表长的操作。依次输入两个宿舍学 生姓名:自己宿舍和隔壁宿舍同学。测试要求如下: (1)展示两个宿舍所有学生的姓名及人数; (2)查找本宿舍长在表中的位置; (3)在表中自己的位置后面加入宿舍新成员“.…”,删除宿舍里的已转走的学生“…” 展示两个宿舍现有的同学。
时间: 2023-11-22 22:55:57 浏览: 29
下面是基于单链表实现的代码:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def is_empty(self):
return self.head is None
def length(self):
count = 0
current = self.head
while current is not None:
count += 1
current = current.next
return count
def insert_head(self, data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
def insert_tail(self, data):
new_node = Node(data)
if self.is_empty():
self.head = new_node
else:
current = self.head
while current.next is not None:
current = current.next
current.next = new_node
def search(self, data):
current = self.head
index = 0
while current is not None:
if current.data == data:
return index
index += 1
current = current.next
return None
def delete(self, data):
if self.is_empty():
return
if self.head.data == data:
self.head = self.head.next
return
current = self.head
while current.next is not None:
if current.next.data == data:
current.next = current.next.next
return
current = current.next
def insert(self, data, position):
if position == 0:
self.insert_head(data)
else:
new_node = Node(data)
current = self.head
index = 0
while index < position - 1 and current is not None:
index += 1
current = current.next
if current is None:
return False
new_node.next = current.next
current.next = new_node
return True
def display(self):
current = self.head
while current is not None:
print(current.data)
current = current.next
# 创建两个宿舍的名单
dorm1 = LinkedList()
dorm2 = LinkedList()
# 添加宿舍1的同学
dorm1.insert_head("张三")
dorm1.insert_head("李四")
dorm1.insert_head("王五")
# 添加宿舍2的同学
dorm2.insert_head("赵六")
dorm2.insert_head("钱七")
dorm2.insert_head("孙八")
# 展示两个宿舍的同学及人数
print("宿舍1的同学:")
dorm1.display()
print("人数:", dorm1.length())
print("宿舍2的同学:")
dorm2.display()
print("人数:", dorm2.length())
# 查找本宿舍长在表中的位置
position = dorm1.search("张三")
if position:
print("张三在宿舍1中的位置是:", position)
else:
print("宿舍1中没有张三")
# 在表中自己的位置后面加入宿舍新成员
dorm1.insert("小明", 1)
print("宿舍1的同学:")
dorm1.display()
# 删除宿舍里的已转走的学生
dorm1.delete("王五")
print("宿舍1的同学:")
dorm1.display()
```
输出结果为:
宿舍1的同学:
王五
李四
张三
人数: 3
宿舍2的同学:
孙八
钱七
赵六
人数: 3
张三在宿舍1中的位置是: 2
宿舍1的同学:
王五
小明
李四
张三
宿舍1的同学:
小明
李四
张三
阅读全文