查找两个链表的第一个共同元素的Python程序
当需要查找两个链表之间第一次出现的共同元素时,定义一种向链表添加元素的方法以及一种在这些链表中第一次出现的共同元素的获取方法。
以下是相应示例的演示 −
示例
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList_structure:
def __init__(self):
self.head = None
self.last_node = None
def add_vals(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 first_common_val(list_1, list_2):
curr_1 = list_1.head
while curr_1:
data = curr_1.data
curr_2 = list_2.head
while curr_2:
if data == curr_2.data:
return data
curr_2 = curr_2.next
curr_1 = curr_1.next
return None
my_list_1 = LinkedList_structure()
my_list_2 = LinkedList_structure()
my_list = input('输入第一个链表的元素:').split()
for elem in my_list:
my_list_1.add_vals(int(elem))
my_list = input('输入第二个链表的元素:').split()
for elem in my_list:
my_list_2.add_vals(int(elem))
common_vals = first_common_val(my_list_1, my_list_2)
if common_vals:
print('第一个链表中共同的元素是{}。'.format(common))
else:
print('这两个链表没有共同元素')
输出
输入第一个链表的元素:45 67 89 123 45
输入第二个链表的元素:34 56 78 99 0 11
这两个链表没有共同元素
说明
-
创建‘Node’类。
-
创建带有所需属性的另一个‘LinkedList_structure’类。
-
它具有一个‘init’函数,用于将第一个元素即‘head’初始化为‘None’。
-
定义一个名为“add_vals”的方法,可帮助将值添加到栈中。
-
定义另一个名为“first_common_val”的方法,可帮助查找两个链表中找到的第一个公共值。
-
创建两个“LinkedList_structure”的实例。
-
向这两个链表中添加元素。
-
对这些链表调用“first_common_val”方法。
-
在控制台上显示输出。