Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python tìm phần tử chung đầu tiên giữa 2 danh sách liên kết

Khi cần tìm phần tử chung xuất hiện lần đầu tiên giữa hai danh sách liên kết, phương thức thêm phần tử vào danh sách liên kết và phương thức lấy phần tử chung xuất hiện lần đầu tiên trong các danh sách liên kết này được định nghĩa.

Ví dụ

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('Nhập các phần tử của danh sách liên kết đầu tiên: ').split()
for elem in my_list:
    my_list_1.add_vals(int(elem))
my_list = input('Nhập các phần tử của danh sách liên kết thứ hai: ').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('Phần tử xuất hiện đầu tiên trong danh sách liên kết đầu tiên và chung cho cả hai là {}.'.format(common_vals))
else:
    print('Hai danh sách không có phần tử chung')

Kết quả

Nhập các phần tử của danh sách liên kết đầu tiên: 45 67 89 123 45
Nhập các phần tử của danh sách liên kết thứ hai: 34 56 78 99 0 11
Hai danh sách không có phần tử chung

Giải thích

  • Lớp Node được tạo.
  • Lớp LinkedList_structure với các thuộc tính cần thiết được tạo.
  • Phương thức __init__ khởi tạo phần tử đầu tiên (head) là None.
  • Phương thức add_vals giúp thêm giá trị vào danh sách.
  • Phương thức first_common_val giúp tìm giá trị chung đầu tiên được tìm thấy trong hai danh sách liên kết.
  • Hai instance của LinkedList_structure được tạo.
  • Các phần tử được thêm vào cả hai danh sách liên kết.
  • Phương thức first_common_val được gọi trên các danh sách liên kết này.
  • Kết quả được hiển thị trên console.