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_listvớ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àNonevà 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.