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

Chương trình Python tìm kiếm phần tử trong danh sách liên kết không dùng đệ quy

Khi cần tìm kiếm một phần tử trong danh sách liên kết mà không sử dụng phương pháp đệ quy, phương thức thêm giá trị vào danh sách liên kết, cũng như phương thức hiển thị các phần tử của danh sách liên kết. Nó cũng sẽ có một phương thức giúp tìm chỉ số của phần tử đang được tìm kiếm.

Ví dụ

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class my_linked_list:
    def __init__(self):
        self.head = None
        self.last_node = None
    
    def add_value(self, my_data):
        if self.last_node is None:
            self.head = Node(my_data)
            self.last_node = self.head
        else:
            self.last_node.next = Node(my_data)
            self.last_node = self.last_node.next
    
    def print_it(self):
        curr = self.head
        while curr is not None:
            print(curr.data)
            curr = curr.next
    
    def find_index_val(self, my_key):
        curr = self.head
        index_val = 0
        while curr:
            if curr.data == my_key:
                return index_val
            curr = curr.next
            index_val = index_val + 1
        return -1

my_instance = my_linked_list()
my_list = [67, 4, 78, 98, 32, 0, 11, 8]
for data in my_list:
    my_instance.add_value(data)
print('Danh sách liên kết là: ')
my_instance.print_it()
print()
my_key = int(input('Giá trị bạn muốn tìm kiếm? '))
index_val = my_instance.find_index_val(my_key)
if index_val == -1:
    print(str(my_key) + ' không được tìm thấy.')
else:
    print('Phần tử được tìm thấy tại chỉ số ' + str(index_val) + '.')
n = int(input('Bạn muốn thêm bao nhiêu phần tử? '))
for i in range(n):
    data = int(input('Nhập dữ liệu: '))
    my_instance.add_value(data)
print('Danh sách liên kết là: ')
my_instance.print_it()

Kết quả

Danh sách liên kết là: 67 4 78 98 32 0 11 8
Giá trị bạn muốn tìm kiếm? 11
Phần tử được tìm thấy tại chỉ số 6.
Bạn muốn thêm bao nhiêu phần tử? 2
Nhập dữ liệu: 111
Nhập dữ liệu: 56
Danh sách liên kết là: 67 4 78 98 32 0 11 8 111 56

Giải thích

  • Lớp Node được tạo.
  • Lớp my_linked_list 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 và nút cuối là None.
  • Phương thức add_value được dùng để thêm dữ liệu vào danh sách liên kết.
  • Phương thức print_it được định nghĩa để hiển thị dữ liệu danh sách liên kết trên console.
  • Phương thức find_index_val được định nghĩa giúp tìm chỉ số của phần tử do người dùng nhập.
  • Một đối tượng của lớp my_linked_list được tạo.
  • Một danh sách được định nghĩa.
  • Danh sách này được duyệt qua và các phương thức được gọi trên nó để thêm dữ liệu.
  • Kết quả được hiển thị trên console bằng phương thức print_it.
  • Đầu vào của người dùng được yêu cầu cho phần tử cần tìm kiếm.
  • Phương thức find_index_val được gọi trên này và kết quả được hiển thị trên console.