Nếu tôi đã tạo một danh sách các nút được liên kết có thuộc tính
class Node[object]: def __init__[self, data=None, next_node=None]: self.data = data self.next_node = next_node0, có cách nào để in tất cả các thuộc tính
class Node[object]: def __init__[self, data=None, next_node=None]: self.data = data self.next_node = next_node0 cho tất cả các nút trong danh sách được liên kết bằng cách sử dụng vòng lặp trong thời gian không?
[Chỉnh sửa] Ngoài ra, làm thế nào tôi có thể gọi phương pháp phép thuật ITER để tôi có thể lặp lại và in qua danh sách được liên kết? Làm thế nào tôi cũng có thể tạo một phương thức cho phép bổ sung, ở đầu, kết thúc hoặc trước hoặc sau một đối tượng nhất định?iter magic method so that I can iterate and print over the linked list? How also might I create a method that allows for additions, at the beginning, end, or before or after a certain object?
[Tôi xin lỗi nếu có một cái gì đó cơ bản, về mặt khái niệm, mà tôi đang thiếu trong sự hiểu biết của tôi]
Dưới đây là mã cho các nút và danh sách liên kết đơn mà tôi đã thiết lập và bạn sẽ thấy rằng tôi đã in từng giá trị cho mỗi nút ở phía dưới. Tuy nhiên, tôi không chắc chắn nếu có một cách đơn giản để in tất cả các giá trị dễ dàng, thay vì liệt kê từng giá trị:
# node class
class Node[object]:
def __init__[self, value]:
self.value = value
self.next = None
# singly linked list class
class SinglyLinkedList[object]:
def __init__[self]:
self.head = None
self.tail = None
linked_list = SinglyLinkedList[]
linked_list.head = Node['Alice']
linked_list.head.next = Node['Chad']
linked_list.head.next.next = Node['Debra']
print linked_list.head.value, linked_list.head.next.value, linked_list.head.next.next.value
# is there a way to print all values for `linked_list` easily?
Cảm ơn cộng đồng Stack đã giúp đỡ và đọc sách!
Danh sách được liên kết trong Python là một trong những loại dữ liệu trừu tượng thú vị nhất đã tiếp tục được phổ biến kể từ ngày C/C ++. Trong bài viết này, chúng tôi sẽ học cách thực hiện một danh sách được liên kết trong Python từ đầu. in Python are one of the most interesting abstract data types that have continued to stay in popularity since the C/C++ days. In this article, we’ll learn how to implement a Linked list in Python from scratch. Danh sách được liên kết là cấu trúc dữ liệu tuyến tính trong đó mỗi phần tử là một đối tượng riêng biệt. Các yếu tố của một danh sách được liên kết, không giống như một mảng, không được lưu trữ cùng nhau trong bộ nhớ. linked list is a linear data structure where
each element is a separate object. The elements of a linked list, unlike an array, are not stored together in the memory. Mỗi yếu tố của danh sách được liên kết trỏ đến phần tử sau nó. Ở đây các điểm có nghĩa là mỗi phần tử lưu trữ địa chỉ của phần tử tiếp theo. stores the address of the next element. Trong khi đi qua một danh sách được liên kết, chúng tôi sử dụng các gợi ý này để nhảy từ nút này sang nút khác. Đối với mỗi danh sách được liên kết, có hai yếu tố cần được xem xét: Hãy cùng đi qua các bước để tạo một danh sách được liên kết trong Python. Để tạo danh sách được liên kết của riêng chúng tôi, chúng tôi cần xác định một lớp nút. Trước khi chúng tôi xác định một lớp nút, chúng tôi cần phải suy nghĩ về những trường nên lớp nào.Danh sách được liên kết là gì?
Làm thế nào để tạo một danh sách được liên kết trong Python?
Tạo lớp nút
Một nút danh sách được liên kết được cho là để lưu trữ hai thứ. Đó là :
- Dữ liệu
- Địa chỉ của nút tiếp theo
Hãy để xác định một lớp nút với hai trường này.
class Node[object]: def __init__[self, data=None, next_node=None]: self.data = data self.next_node = next_node
Tạo lớp danh sách liên kết
Hãy để Lừa tạo một lớp khác sẽ khởi tạo một nút trống để tạo danh sách được liên kết.
class LinkedList[object]: def __init__[self, head=None]: self.head = head
Có một vài chức năng quan trọng sẽ được tổ chức trong lớp này. Hãy cùng vượt qua mục đích và định nghĩa cho từng lớp này.
1. Chức năng in danh sách
Hãy để viết một chức năng để in danh sách được liên kết của chúng tôi. Để in danh sách được liên kết, chúng ta cần đi qua toàn bộ danh sách và tiếp tục in dữ liệu từ mỗi nút.
def printList[self]: temp = self.head while [temp]: print [temp.data, " -> ", end = ''] temp = temp.next_node print[""]
2. Nhận kích thước của danh sách
Hãy để viết một chức năng trả về kích thước của danh sách được liên kết. Để tính toán kích thước, chúng ta cần đi qua toàn bộ danh sách và giữ một quầy trong khi làm như vậy.
def size[self]: current = self.head count = 0 while current: count += 1 current = current.next_node return count
Hàm này sẽ trả về kích thước của danh sách được liên kết.
3. Chèn một nút mới ở đầu
Hãy để viết một chức năng để chèn một nút mới ở đầu.
def insert_at_head[self, data]: new_node = Node[data] new_node.next_node = self.head self.head = new_node
Điều này sẽ tạo ra một nút mới với dữ liệu và thêm nó trước đầu. Sau đó, nó trỏ đầu của danh sách được liên kết vào nút mới này.
4. Nhận nút tiếp theo
Hàm để có được nút tiếp theo được đưa ra dưới đây:
def get_next_node [self,node]: return node.next_node.data
Tạo một danh sách được liên kết mới
Hãy cùng viết chức năng chính và tạo một danh sách được liên kết bằng cách sử dụng lớp chúng tôi đã tạo ở trên.
Dòng mã này khởi tạo đối tượng LLIST bằng một nút trống.
1. Thêm nút
Hãy để thêm một số dữ liệu vào nút này.
Tạo một vài nút khác cho danh sách được liên kết.
2. Tạo liên kết giữa các nút
Tạo liên kết giữa các nút riêng lẻ là phần quan trọng nhất trong việc tạo danh sách được liên kết.
Bạn có thể tạo các liên kết bằng cách sử dụng:
llist.head.next_node = s s.next_node = t
3. In các nút của danh sách
Để xác minh xem danh sách có được tạo thành công hay không, chúng ta có thể sử dụng chức năng in.
Output:
4. xuất trình kích thước của danh sách
Để xuất kích thước của danh sách, hãy gọi hàm kích thước chúng tôi đã viết ở trên.
Đầu ra:
5. Chèn một nút mới
Hãy cùng thử chèn một số dữ liệu ở đầu danh sách được liên kết bằng cách sử dụng chức năng ở trên.
Chúng tôi có thể in danh sách để xác minh.
Đầu ra:
5. Chèn một nút mới
Hãy cùng thử chèn một số dữ liệu ở đầu danh sách được liên kết bằng cách sử dụng chức năng ở trên.
print[llist.get_next_node[s]]
Output:
Chúng tôi có thể in danh sách để xác minh.
6. Nhận nút tiếp theo
class Node[object]: def __init__[self, data=None, next_node=None]: self.data = data self.next_node = next_node class LinkedList[object]: def __init__[self, head=None]: self.head = head def size[self]: current = self.head count = 0 while current: count += 1 current = current.next_node return count def printList[self]: temp = self.head while [temp]: print [temp.data, " -> ", end = ''] temp = temp.next_node print[""] def insert_at_head[self, data]: new_node = Node[data] new_node.next_node = self.head self.head = new_node def get_next_node [self,node]: return node.next_node.data if __name__=='__main__': llist = LinkedList[] llist.head = Node[1] s = Node[2] t = Node[3] llist.head.next_node = s; s.next_node = t llist.printList[] print[s.data] print[llist.size[]] print[llist.get_next_node[s]] llist.insert_at_head[5] llist.printList[]
Để có được nút tiếp theo:
Hoàn thành thực hiện các danh sách được liên kết trong Python