删除链表重复节点 python_Python链表删除dupli

问题解决方案使用实例变量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被调用以从列表中删除重复项。在

将显示链接列表。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值