以下是一个示例代码,展示了如何将数据分别读入两个链表中:
class Node:
def __init__(self, data=None):
self.data = data
self.prev = None
self.next = None
class DoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None
def append(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
self.tail = new_node
else:
new_node.prev = self.tail
self.tail.next = new_node
self.tail = new_node
def split_data(data):
linked_list1 = DoublyLinkedList()
linked_list2 = DoublyLinkedList()
for i, val in enumerate(data):
if i % 2 == 0:
linked_list1.append(val)
else:
linked_list2.append(val)
return linked_list1, linked_list2
# 示例数据
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 分割数据
list1, list2 = split_data(data)
# 输出链表1的内容
current = list1.head
while current:
print(current.data)
current = current.next
# 输出链表2的内容
current = list2.head
while current:
print(current.data)
current = current.next
这个示例代码中,我们定义了一个Node
类来表示链表中的每个节点,DoublyLinkedList
类用于表示双端双向链表。append
方法用于在链表末尾添加新节点。
split_data
函数接受一个数据列表作为输入,然后根据奇偶索引将数据分别添加到两个链表中。最后,返回这两个链表。
在示例中,我们创建一个包含10个数字的示例数据列表。然后,将数据分割为两个链表list1
和list2
。最后,我们遍历并打印两个链表的内容。
输出结果如下:
1
3
5
7
9
2
4
6
8
10
可以看到,奇数索引的数据被添加到了链表1中,而偶数索引的数据被添加到了链表2中。