Hướng dẫn print a linked list in python - in một danh sách được liên kết trong python

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_node

0, 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_node

0 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à gì?

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:

  • Các nút - Chúng tôi xử lý chúng bằng cách tạo một lớp nút
  • Kết nối giữa các nút - chúng tôi sẽ xử lý điều này với các biến và danh sách trong Python.

Làm thế nào để tạo một danh sách được liên kết trong Python?

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 lớp nút

Để 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.

Một nút danh sách được liên kết được cho là để lưu trữ hai thứ. Đó là :

  1. Dữ liệu
  2. Đị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

Làm thế nào để bạn in một danh sách được liên kết trong Python?

Tạo lớp danh sách liên kết..
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.....
Nhận kích thước của danh sách.Hãy viết một hàm trả về kích thước của danh sách được liên kết.....
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.....
Nhận nút tiếp theo ..

Làm cách nào để in một danh sách được liên kết?

Printelement.java Cho một con trỏ đến nút đầu của danh sách được liên kết, in các phần tử của nó theo thứ tự, một phần tử trên mỗi dòng.Nếu con trỏ đầu là null (biểu thị danh sách trống), đừng in bất cứ thứ gì.Phương thức in void (đầu nút*) lấy nút đầu của danh sách được liên kết làm tham số.void Print(Node* head) method takes the head node of a linked list as a parameter.

Làm thế nào để bạn trả lại một danh sách được liên kết trong Python?

Hàm sau được sử dụng để thêm một mục ở cuối danh sách được liên kết.def insert_at_end (self, data): new_node = node (dữ liệu) nếu tự.start_node là không có: tự.start_node = new_node return n = self.