问题解决方案使用实例变量data和next创建一个类节点。在
使用实例变量head和last\u node创建一个类LinkedList。在
变量head指向链接列表中的第一个元素,而last_节点指向最后一个元素。在
定义方法append、getprev_node、remove和display。在
append方法接受一个数据项作为参数,并将具有该数据项的节点追加到列表中。在
get_prev_node方法以引用节点为参数并返回上一个节点。当引用节点是第一个节点时,它返回None。在
remove方法将一个节点作为参数,并将其从列表中删除。在
方法display遍历第一个节点的列表并打印每个节点的数据。在
定义一个函数remove\u duplicates,该函数将链表作为参数并从中删除重复项。在
函数remove_duplicates使用两个嵌套循环来删除重复节点。在
创建LinkedList的实例,删除重复节点并显示列表。在
程序/源代码
下面是一个Python程序的源代码,用于从链接列表中删除重复项。在class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
self.last_node = None
def append(self, data):
if self.last_node is None:
self.head = Node(data)
self.last_node = self.head
else:
self.last_node.next = Node(data)
self.last_node = self.last_node.next
def get_prev_node(self, ref_node):
current = self.head
while (current and current.next != ref_node):
current = current.next
return current
def remove(self, node):
prev_node = self.get_prev_node(node)
if prev_node is None:
self.head = self.head.next
else:
prev_node.next = node.next
def display(self):
current = self.head
while current:
print(current.data, end = ' ')
current = current.next
def remove_duplicates(llist):
current1 = llist.head
while current1:
data = current1.data
current2 = current1.next
while current2:
if current2.data == data:
llist.remove(current2)
current2 = current2.next
current1 = current1.next
a_llist = LinkedList()
data_list = input('Please enter the elements in the linked list: ').split()
for data in data_list:
a_llist.append(int(data))
remove_duplicates(a_llist)
print('The list with duplicates removed: ')
a_llist.display()
程序说明将创建LinkedList的实例。在
系统将提示用户输入列表的数据项。在
函数remove\u duplicates被调用以从列表中删除重复项。在
将显示链接列表。在