Computer >> Máy Tính >  >> Lập trình >> Python

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

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

Nó cũng sẽ có một phương thức giúp tìm chỉ mục của phần tử đang được tìm kiếm.

Dưới đây là một minh chứng cho điều tương tự -

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('The linked list is : ')
my_instance.print_it()
print()

my_key = int(input('What value would you search for? '))
index_val = my_instance.find_index_val(my_key)
if index_val == -1:
   print(str(my_key) + ' was not found.')
else:
   print('Element was found at index ' + str(index_val) + '.')
n = int(input('How many elements would you wish to add ? '))
for i in range(n):
   data = int(input('Enter data : '))
   my_instance.add_value(data)
print('The linked list is : ')
my_instance.print_it()

Đầu ra

The linked list is :
67
4
78
98
32
0
11
8
What value would you search for? 11
Element was found at index 6.
How many elements would you wish to add ? 2
Enter data : 111
Enter data : 56
The linked list is :
67
4
78
98
32
0
11
8
111
56

Giải thích

  • Lớp 'Node' được tạo.

  • Một lớp ‘my_linked_list’ khác với các thuộc tính bắt buộc được tạo.

  • Nó có chức năng ‘init’ được sử dụng để khởi tạo phần tử đầu tiên, tức là ‘head’ thành ‘None’ và nút cuối cùng thành ‘None’.

  • Một phương thức khác có tên là ‘add_value’ được xác định, được sử dụng để thêm dữ liệu vào danh sách được liên kết.

  • Một phương thức khác có tên là ‘print_it’ được xác định dùng để hiển thị dữ liệu danh sách được liên kết trên bảng điều khiển.

  • Một phương thức khác có tên là ‘find_index_val’ được định nghĩa để giúp tìm chỉ mục của phần tử do người dùng nhập vào.

  • Một đối tượng của lớp ‘my_linked_list’ được tạo.

  • Một danh sách được xác định.

  • Danh sách này được lặp lại và các phương thức được gọi trên đó để thêm dữ liệu.

  • Điều này được hiển thị trên bảng điều khiển 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 tìm kiếm.

  • Phương thức ‘find_index_val’ được gọi trên phương thức này và kết quả được hiển thị trên bảng điều khiển.