编制Python程序,利用链式存储方式实现下列功能:从键盘输入双链表的结点值来建立一个双链表(整数),然后根据屏幕提示,进行求双链表的个数、在双链表中插入、删除结点等操作。
时间: 2024-09-24 17:13:13 浏览: 56
在Python中,我们可以使用内置的`list`数据结构来模拟链表,因为列表在内部已经实现了双向链接。然而,如果你想按照链表的方式进行操作,可以自定义一个简单的`Node`类表示链表节点,并提供相应的方法如`add`, `count`, 和`remove`来进行插入、计数和删除操作。以下是一个基本的实现:
```python
class Node:
def __init__(self, value=None):
self.value = value
self.next = None
self.prev = None
class DoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None
def add(self, value):
new_node = Node(value)
if not self.head:
self.head = new_node
self.tail = new_node
else:
new_node.prev = self.tail
self.tail.next = new_node
self.tail = new_node
def count(self):
current = self.head
count = 0
while current:
count += 1
current = current.next
return count
def remove(self, value):
current = self.head
while current:
if current.value == value:
if current.prev:
current.prev.next = current.next
else:
self.head = current.next
if current.next:
current.next.prev = current.prev
return True
current = current.next
return False
# 使用示例
dll = DoublyLinkedList()
while True:
print("请输入操作(输入'q'退出):")
operation = input("1. 插入\n2. 计数\n3. 删除\n")
if operation.lower() == 'q':
break
value = int(input("请输入值:"))
if operation.lower() == '1':
dll.add(value)
elif operation.lower() == '2':
print(f"链表中有 {dll.count()} 个元素")
elif operation.lower() == '3':
should_remove = input(f"是否删除值为 {value} 的节点(y/n)?")
if should_remove.lower() == 'y':
dll.remove(value)
print("操作结束.")
```
在这个实现中,用户通过命令行交互选择操作,然后根据选择执行相应的链表操作。
阅读全文