Cách in danh sách liên kết trong python

Bài viết này sẽ thảo luận về một cấu trúc dữ liệu tùy chỉnh được gọi là Danh sách được liên kết. Chúng tôi cũng sẽ triển khai danh sách được liên kết trong Python và thực hiện các thao tác khác nhau trên danh sách được liên kết

Danh sách liên kết trong Python là gì

Như tên gợi ý, danh sách liên kết là cấu trúc dữ liệu chứa các phần tử được kết nối bằng liên kết

Một danh sách được liên kết được tạo bằng cách sử dụng các đối tượng được gọi là các nút. Mỗi nút chứa hai thuộc tính - một để lưu trữ dữ liệu và một để kết nối với nút tiếp theo trong danh sách được liên kết

Bạn có thể hiểu cấu trúc của một nút bằng hình sau

Nơi đây,

  • Một
    class Node:
        def __init__[self, data]:
            self.data = data
            self.next = None
    
    
    class LinkedList:
        def __init__[self]:
            self.Head = None
    
    
    myLinkedList = LinkedList[]
    myNode1 = Node[10]
    myNode2 = Node[20]
    myNode3 = Node[30]
    myNode4 = Node[40]
    myLinkedList.Head = myNode1
    myNode1.next = myNode2
    myNode2.next = myNode3
    myNode3.next = myNode4
    
    print["The elements in the linked list are:"]
    print[myLinkedList.Head.data, end=" "]
    print[myLinkedList.Head.next.data, end=" "]
    print[myLinkedList.Head.next.next.data, end=" "]
    print[myLinkedList.Head.next.next.next.data]
    
    9 là một đối tượng chứa các thuộc tính
    The linked list is:
    10 20 30 40
    
    0 và
    The linked list is:
    10 20 30 40
    
    1
  • Thuộc tính
    The linked list is:
    10 20 30 40
    
    0 lưu trữ dữ liệu
  • Thuộc tính
    The linked list is:
    10 20 30 40
    
    1 đề cập đến nút tiếp theo trong danh sách được liên kết

Như trong hình dưới đây, chúng ta có thể kết nối nhiều nút khác nhau để tạo danh sách liên kết

Nơi đây,

  • Chúng tôi đã tạo một danh sách được liên kết bao gồm bốn nút
  • Nút đầu tiên chứa số 10, nút thứ hai chứa 20, nút thứ ba chứa 30 và nút cuối cùng chứa 40
  • Chúng tôi cũng đã tạo một biến
    The linked list is:
    10 20 30 40
    
    4 đề cập đến nút đầu tiên. Chúng tôi chỉ giữ biến
    The linked list is:
    10 20 30 40
    
    4 trong một đối tượng danh sách được liên kết. Dữ liệu trong tất cả các nút khác được lấy bằng cách duyệt qua danh sách được liên kết bắt đầu từ nút đầu tiên được tham chiếu bởi
    The linked list is:
    10 20 30 40
    
    4
  • Thuộc tính
    The linked list is:
    10 20 30 40
    
    1 của nút cuối cùng đề cập đến một đối tượng
    The linked list is:
    10 20 30 40
    
    8. Thuộc tính
    The linked list is:
    10 20 30 40
    
    1 của nút cuối cùng của danh sách được liên kết sẽ luôn tham chiếu đến đối tượng
    The linked list is:
    10 20 30 40
    
    8
  • Nếu một danh sách được liên kết trống, biến
    The linked list is:
    10 20 30 40
    
    4 sẽ tham chiếu đến đối tượng
    The linked list is:
    10 20 30 40
    
    8

Bây giờ chúng ta đã hiểu cấu trúc cơ bản của danh sách liên kết. Hãy để chúng tôi thực hiện một danh sách được liên kết trong Python

Cách tạo danh sách liên kết trong Python

Vì các nút là các khối xây dựng của một danh sách được liên kết, trước tiên chúng ta sẽ tạo một nút. Đối với điều này, chúng ta sẽ định nghĩa một lớp

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
9 với các thuộc tính
The linked list is:
10 20 30 40
0 và
The linked list is:
10 20 30 40
1 như hình bên dưới

The linked list is:
10 20 30 40
7

đầu ra

The linked list is:
10 20 30 40
8

Trong ví dụ trên, bạn có thể quan sát thấy rằng thuộc tính

The linked list is:
10 20 30 40
1 của
class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
9 đề cập đến
The linked list is:
10 20 30 40
8 theo mặc định. Khi chúng ta chèn nó vào danh sách liên kết, chúng ta gán thuộc tính
The linked list is:
10 20 30 40
1 cho các nút trong danh sách liên kết, như chúng ta sẽ thảo luận trước

Ta phải tạo đối tượng có thuộc tính

The linked list is:
10 20 30 40
4 để tạo danh sách liên kết. Chúng ta có thể định nghĩa lớp
The linked list is:
10 20 30 40
41 như hình bên dưới

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]

đầu ra

The linked list is:
10 20 30 40

Trong ví dụ trên, chúng ta đã tạo một danh sách liên kết

Sau đó, chúng tôi tạo các nút theo cách thủ công bằng cách sử dụng dữ liệu đã cho, thêm từng nút một vào danh sách được liên kết và in chúng. Sau này, chúng ta sẽ học cách chèn các phần tử vào danh sách liên kết bằng cách sử dụng vòng lặp

The linked list is:
10 20 30 40
42 của Python

Bây giờ chúng ta hãy thảo luận về cách chúng ta có thể in tất cả các phần tử của danh sách được liên kết mà không cần truy cập tất cả các nút theo cách thủ công

In tất cả các phần tử của danh sách được liên kết bằng Python

Chúng tôi sẽ sử dụng vòng lặp

The linked list is:
10 20 30 40
42 để in tất cả các phần tử danh sách được liên kết

Bắt đầu từ con trỏ

The linked list is:
10 20 30 40
4, đầu tiên chúng ta sẽ in dữ liệu trong nút hiện tại bằng thuộc tính
The linked list is:
10 20 30 40
0 của nút. Sau đó, chúng ta sẽ di chuyển đến nút tiếp theo bằng cách sử dụng con trỏ
The linked list is:
10 20 30 40
1

Chúng tôi sẽ làm theo quy trình này cho đến khi chúng tôi đến cuối danh sách được liên kết [i. e. , thuộc tính

The linked list is:
10 20 30 40
1 của một nút được tìm thấy là
The linked list is:
10 20 30 40
8]. Như được hiển thị bên dưới, bạn có thể triển khai toàn bộ logic trong phương thức
The linked list is:
10 20 30 40
49

The linked list is:
10 20 30 40
5

đầu ra

The linked list is:
10 20 30 40
4

Chèn phần tử vào danh sách liên kết trong Python

Có 4 tình huống xảy ra khi chèn phần tử vào danh sách liên kết

  1. Danh sách liên kết có thể để trống trước khi chèn
  2. Chúng ta phải chèn một phần tử vào đầu danh sách liên kết không rỗng
  3. Chúng ta phải chèn một phần tử vào cuối danh sách liên kết
  4. Chúng ta phải chèn một phần tử vào một vị trí nhất định trong danh sách liên kết

Hãy để chúng tôi thảo luận về cách chèn một phần tử vào danh sách được liên kết trong mọi tình huống

Chèn một phần tử vào danh sách liên kết rỗng

Để chèn một phần tử vào một danh sách liên kết trống, chúng ta sẽ định nghĩa một phương thức

The linked list is:
10 20 30 40
70 chấp nhận phần tử đó làm đối số đầu vào và thêm một nút chứa phần tử đầu vào vào danh sách được liên kết

Đối với điều này, chúng tôi sẽ tạo một nút trong

The linked list is:
10 20 30 40
70 với phần tử đầu vào là
The linked list is:
10 20 30 40
0. Sau khi tạo nút ta sẽ gán cho nút thuộc tính
The linked list is:
10 20 30 40
4

Bằng cách này, nút mới sẽ trở thành nút đầu tiên của danh sách liên kết. Phương pháp có thể được thực hiện như sau

The linked list is:
10 20 30 40
7

đầu ra

The linked list is:
10 20 30 40
2

Chèn phần tử vào đầu danh sách liên kết

Để chèn một phần tử vào đầu danh sách không trống, chúng ta sẽ định nghĩa một phương thức

The linked list is:
10 20 30 40
74 lấy một phần tử làm đầu vào và thêm nó vào đầu danh sách được liên kết. Trong phương thức
The linked list is:
10 20 30 40
74, đầu tiên chúng ta sẽ tạo một nút với phần tử đầu vào là dữ liệu

Sau đó, ta sẽ trỏ thuộc tính

The linked list is:
10 20 30 40
1 của nút vừa tạo tới nút mà thuộc tính
The linked list is:
10 20 30 40
4 của danh sách liên kết trỏ đến. Tiếp theo, chúng ta sẽ gán cho nút vừa tạo thuộc tính
The linked list is:
10 20 30 40
4

Bằng cách này, nút mới sẽ được chèn vào đầu danh sách liên kết

The linked list is:
10 20 30 40
8

đầu ra

The linked list is:
10 20 30 40
9

Như hình bên dưới, chúng ta có thể kết hợp các phương thức trên để tạo một phương thức duy nhất để chèn một phần tử vào đầu danh sách liên kết

The linked list is:
10 20 30 40
80

đầu ra

The linked list is:
10 20 30 40
9

Chúng tôi đã hợp nhất phương thức

The linked list is:
10 20 30 40
70 vào phương thức
The linked list is:
10 20 30 40
74 vì việc chèn vào danh sách liên kết trống về cơ bản có nghĩa là chúng tôi đang chèn một phần tử vào đầu danh sách được liên kết

Chèn một phần tử vào cuối danh sách liên kết

Chèn phần tử vào cuối danh sách rỗng cũng giống như chèn phần tử vào đầu danh sách liên kết

Để chèn một phần tử vào cuối danh sách liên kết, trước tiên chúng ta sẽ kiểm tra xem danh sách liên kết có trống không. Nếu danh sách được liên kết được tìm thấy trống, chúng ta có thể chỉ cần gán một nút chứa phần tử mới cho thuộc tính

The linked list is:
10 20 30 40
4 như chúng ta đã làm trong phương thức
The linked list is:
10 20 30 40
74

Nếu không, chúng tôi sẽ duyệt qua danh sách được liên kết cho đến khi kết thúc bằng cách sử dụng vòng lặp

The linked list is:
10 20 30 40
42. Chúng tôi sẽ bắt đầu với
The linked list is:
10 20 30 40
4 và tiếp tục di chuyển đến nút tiếp theo bằng cách sử dụng thuộc tính
The linked list is:
10 20 30 40
1 của các nút cho đến khi chúng tôi thấy rằng thuộc tính
The linked list is:
10 20 30 40
1 của nút trỏ đến
The linked list is:
10 20 30 40
8

Khi chúng tôi đến một nút có thuộc tính

The linked list is:
10 20 30 40
1 trỏ đến
The linked list is:
10 20 30 40
8, chúng tôi đang ở nút cuối cùng. Bây giờ, chúng ta sẽ tạo một nút mới bằng cách sử dụng dữ liệu đầu vào và gán nút này cho thuộc tính tiếp theo của nút cuối cùng của danh sách liên kết

Bằng cách này, phần tử mới sẽ được chèn vào cuối danh sách liên kết. Bạn có thể triển khai toàn bộ logic này trong phương thức

The linked list is:
10 20 30 40
80 như sau

The linked list is:
10 20 30 40
82

đầu ra

The linked list is:
10 20 30 40
83

Chèn một phần tử vào một vị trí nhất định trong danh sách được liên kết

Chúng ta sẽ sử dụng một biến đếm và một vòng lặp

The linked list is:
10 20 30 40
42 để chèn một phần tử vào một vị trí nhất định trong danh sách liên kết

Chúng ta sẽ bắt đầu từ con trỏ Head và tiếp tục di chuyển đến nút tiếp theo bằng vòng lặp

The linked list is:
10 20 30 40
42. Trong mỗi lần lặp, chúng ta cũng sẽ tăng biến đếm

Khi chúng tôi đến nút trước vị trí đã cho, chúng tôi thoát khỏi vòng lặp

The linked list is:
10 20 30 40
42. Ngoài ra, chúng tôi sẽ thoát khỏi vòng lặp nếu chúng tôi đến cuối danh sách được liên kết. Nếu không, chương trình sẽ gặp lỗi

Sau đó, nếu chúng ta vẫn ở

The linked list is:
10 20 30 40
4, chúng ta phải thêm phần tử vào vị trí đầu tiên của danh sách được liên kết; . Tiếp theo, chúng tôi sẽ gán nút của phần tử mới cho danh sách được liên kết của
The linked list is:
10 20 30 40
4

Nếu không phải chèn phần tử vào vị trí thứ nhất, chúng ta sẽ gán nút tại vị trí đã cho cho con trỏ

The linked list is:
10 20 30 40
1 của nút chứa phần tử mới. Tiếp theo, chúng ta sẽ gán nút mới cho thuộc tính
The linked list is:
10 20 30 40
1 của nút tại
The linked list is:
10 20 30 40
89

Bằng cách này, phần tử mới sẽ được chèn vào vị trí đã cho. Như được hiển thị bên dưới, bạn có thể triển khai toàn bộ logic trong phương thức

The linked list is:
10 20 30 40
90

The linked list is:
10 20 30 40
84

đầu ra

The linked list is:
10 20 30 40
85

Xóa phần tử khỏi danh sách liên kết trong Python

Có thể xảy ra ba tình huống khi chúng ta cố gắng xóa một phần tử khỏi danh sách liên kết

  1. Ta phải xóa phần tử đầu tiên của danh sách liên kết
  2. Ta phải xóa phần tử cuối cùng của danh sách liên kết
  3. Ta phải xóa phần tử ở vị trí bất kỳ trong Linked list

Hãy để chúng tôi thảo luận về tất cả các trường hợp này từng cái một

Xóa phần tử đầu tiên của danh sách liên kết

Để xóa phần tử đầu tiên của danh sách liên kết, trước tiên chúng ta sẽ kiểm tra xem danh sách liên kết có trống hay không

Đối với điều này, chúng tôi sẽ kiểm tra xem

The linked list is:
10 20 30 40
4 của danh sách được liên kết có trỏ đến
The linked list is:
10 20 30 40
8 không. Nếu có, chúng tôi sẽ thông báo cho người dùng rằng danh sách được liên kết trống và chúng tôi không có phần tử nào để xóa

Nếu không, chúng tôi sẽ gán nút đầu tiên cho một biến tạm thời. Sau đó, chúng ta sẽ gán nút thứ hai của danh sách liên kết cho thuộc tính

The linked list is:
10 20 30 40
4

Sau đó, chúng tôi sẽ xóa nút đầu tiên được lưu trữ trong biến tạm thời bằng cách sử dụng câu lệnh

The linked list is:
10 20 30 40
94. Như được hiển thị bên dưới, bạn có thể triển khai toàn bộ logic trong phương thức
The linked list is:
10 20 30 40
95

The linked list is:
10 20 30 40
86

đầu ra

The linked list is:
10 20 30 40
87

Xóa phần tử cuối cùng của danh sách liên kết

Để xóa phần tử cuối cùng của danh sách liên kết, trước tiên chúng ta sẽ kiểm tra xem danh sách liên kết có trống hay không

Đối với điều này, chúng tôi sẽ kiểm tra xem

The linked list is:
10 20 30 40
4 của danh sách được liên kết có trỏ đến
The linked list is:
10 20 30 40
8 không. Nếu có, chúng tôi sẽ thông báo cho người dùng rằng danh sách được liên kết trống và chúng tôi không có phần tử nào để xóa

Nếu có các phần tử có mặt trong danh sách, chúng tôi sẽ thực hiện theo quy trình sau

  1. Gán nút đầu tiên cho một biến
    The linked list is:
    10 20 30 40
    
    98
  2. Khởi tạo một biến
    The linked list is:
    10 20 30 40
    
    99 đến
    The linked list is:
    10 20 30 40
    
    8
  3. Duyệt qua danh sách được liên kết bằng vòng lặp
    The linked list is:
    10 20 30 40
    
    42, gán nút tại biến
    The linked list is:
    10 20 30 40
    
    98 cho biến
    The linked list is:
    10 20 30 40
    
    99 và chuyển biến
    The linked list is:
    10 20 30 40
    
    98 sang nút tiếp theo cho đến khi biến
    The linked list is:
    10 20 30 40
    
    98 đến nút cuối cùng. Trong trường hợp này, thuộc tính
    The linked list is:
    10 20 30 40
    
    1 của nút được gán cho
    The linked list is:
    10 20 30 40
    
    98 trở thành
    The linked list is:
    10 20 30 40
    
    8
  4. Khi biến hiện tại đến nút cuối cùng, chúng tôi sẽ gán
    The linked list is:
    10 20 30 40
    
    8 cho thuộc tính
    The linked list is:
    10 20 30 40
    
    1 của biến
    The linked list is:
    10 20 30 40
    
    99 và xóa nút được gán cho biến
    The linked list is:
    10 20 30 40
    
    98

Chúng ta có thể xóa phần tử cuối cùng của danh sách liên kết bằng cách thực hiện các bước trên. Như được hiển thị bên dưới, bạn có thể triển khai toàn bộ logic trong phương thức

The linked list is:
10 20 30 40
813

The linked list is:
10 20 30 40
88

đầu ra

The linked list is:
10 20 30 40
89

Xóa phần tử tại vị trí bất kỳ trong danh sách liên kết

Để xóa một phần tử tại một vị trí bất kỳ trong danh sách liên kết, trước tiên chúng ta sẽ kiểm tra xem danh sách liên kết có trống hay không

Đối với điều này, chúng tôi sẽ kiểm tra xem

The linked list is:
10 20 30 40
4 của danh sách được liên kết có trỏ đến
The linked list is:
10 20 30 40
8 không. Nếu có, chúng tôi sẽ thông báo cho người dùng rằng danh sách được liên kết trống và chúng tôi không có phần tử nào để xóa

Nếu trong danh sách liên kết có phần tử mà ta phải xóa phần tử ở vị trí khác ta thực hiện theo các bước sau

  1. Gán nút đầu tiên cho một biến
    The linked list is:
    10 20 30 40
    
    98
  2. Khởi tạo một biến
    The linked list is:
    10 20 30 40
    
    99 đến
    The linked list is:
    10 20 30 40
    
    8
  3. Khởi tạo biến
    The linked list is:
    10 20 30 40
    
    819 thành 1
  4. Duyệt qua danh sách được liên kết bằng cách sử dụng vòng lặp
    The linked list is:
    10 20 30 40
    
    42, tăng
    The linked list is:
    10 20 30 40
    
    819 trong mỗi lần lặp, gán nút tại biến
    The linked list is:
    10 20 30 40
    
    98 thành
    The linked list is:
    10 20 30 40
    
    99 và chuyển biến
    The linked list is:
    10 20 30 40
    
    98 sang nút tiếp theo cho đến khi biến
    The linked list is:
    10 20 30 40
    
    819 có
    The linked list is:
    10 20 30 40
    
    826 của phần tử bị xóa hoặc chúng tôi đạt . Tại thời điểm này, biến dòng sẽ đề cập đến nút cần xóa
  5. Khi số lượng bằng với vị trí của phần tử bị xóa, có thể xảy ra hai trường hợp
  6. Nếu chúng ta vẫn ở vị trí thứ nhất là
    The linked list is:
    10 20 30 40
    
    4, chúng ta sẽ gán nút được tham chiếu bởi thuộc tính
    The linked list is:
    10 20 30 40
    
    1 của biến hiện tại cho thuộc tính
    The linked list is:
    10 20 30 40
    
    4. Sau đó, chúng ta sẽ xóa biến
    The linked list is:
    10 20 30 40
    
    98
  7. Nếu không ở vị trí số 1, chúng ta sẽ gán nút tiếp theo của biến
    The linked list is:
    10 20 30 40
    
    98 cho thuộc tính tiếp theo của nút được gán cho biến
    The linked list is:
    10 20 30 40
    
    99. Chúng tôi sẽ xóa nút được gán cho biến
    The linked list is:
    10 20 30 40
    
    98. Bằng cách này, phần tử tại vị trí đã cho sẽ bị xóa

Chúng ta có thể thực hiện logic trên trong phương thức

The linked list is:
10 20 30 40
834 được thảo luận bên dưới

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
0

đầu ra

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
1

Đếm số phần tử trong danh sách liên kết trong Python

Để đếm số phần tử trong danh sách liên kết, chúng ta chỉ cần khởi tạo biến

The linked list is:
10 20 30 40
819 thành 0

Sau đó, chúng tôi sẽ bắt đầu từ

The linked list is:
10 20 30 40
4 và di chuyển đến nút tiếp theo bằng vòng lặp
The linked list is:
10 20 30 40
42 cho đến khi chúng tôi đến cuối danh sách được liên kết. Trong mỗi lần lặp của vòng lặp
The linked list is:
10 20 30 40
42, chúng tôi sẽ tăng
The linked list is:
10 20 30 40
819 lên 1

Sau khi thực hiện vòng lặp

The linked list is:
10 20 30 40
42 ta sẽ có số phần tử của danh sách liên kết trong biến
The linked list is:
10 20 30 40
819. Bạn có thể triển khai logic này như được hiển thị trong phương pháp
The linked list is:
10 20 30 40
842 bên dưới

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
2

đầu ra

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
3

Có thể xảy ra hai tình huống để cập nhật giá trị tại một nút trong danh sách liên kết

  1. Chúng ta cần thay thế một giá trị
  2. Chúng ta cần gán một giá trị mới cho phần tử tại bất kỳ vị trí nào trong danh sách liên kết

Thay thế một giá trị trong danh sách được liên kết

Để thay thế một giá trị trong danh sách được liên kết, chúng tôi sẽ bắt đầu từ nút đầu tiên và duyệt qua danh sách được liên kết bằng vòng lặp

The linked list is:
10 20 30 40
42

Chúng tôi sẽ kiểm tra xem nút

The linked list is:
10 20 30 40
98 có chứa giá trị được thay thế tại mỗi nút không. Nếu có, chúng tôi sẽ thay thế giá trị trong nút hiện tại bằng giá trị mới

Bằng cách này, chúng ta có thể cập nhật lần xuất hiện đầu tiên của bất kỳ phần tử nào trong danh sách được liên kết như trong phương thức

The linked list is:
10 20 30 40
845

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
4

đầu ra

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
5

Để cập nhật phần tử tại một vị trí nhất định trong danh sách liên kết, trước tiên chúng ta sẽ kiểm tra xem danh sách liên kết có trống không. Nếu có, có thể có hai tình huống

Nếu danh sách được liên kết trống và chúng tôi phải cập nhật một phần tử khác với vị trí đầu tiên, chúng tôi sẽ thông báo cho người dùng rằng điều đó không thể thực hiện được

Nếu danh sách liên kết trống và chúng ta phải cập nhật phần tử ở vị trí đầu tiên, chúng ta sẽ tạo một nút mới với phần tử đã cho và gán nút vào

The linked list is:
10 20 30 40
4 của danh sách liên kết. Nếu không, chúng ta sẽ khởi tạo biến
The linked list is:
10 20 30 40
847 thành 1

Sau đó, chúng tôi sẽ duyệt qua danh sách được liên kết bằng vòng lặp

The linked list is:
10 20 30 40
42. Trong mỗi lần lặp của vòng lặp
The linked list is:
10 20 30 40
42, chúng ta sẽ di chuyển đến nút tiếp theo trong danh sách liên kết, tăng biến
The linked list is:
10 20 30 40
847 lên 1 và kiểm tra xem đã đến vị trí phần tử cần cập nhật chưa

Nếu đến vị trí cần cập nhật, chúng tôi sẽ cập nhật giá trị tại nút hiện tại của danh sách liên kết và thông báo cho người dùng

Nếu chúng ta không đến được vị trí cần cập nhật và vòng lặp

The linked list is:
10 20 30 40
42 kết thúc, chúng ta sẽ thông báo cho người dùng rằng không đủ phần tử và chúng ta không thể cập nhật giá trị. Logic này có thể được thực hiện như hình bên dưới trong phương pháp
The linked list is:
10 20 30 40
852

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
6

đầu ra

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
7

Tại sao nên sử dụng Danh sách được liên kết trong Python

  • Nếu bạn không cần truy cập ngẫu nhiên vào các phần tử, danh sách được liên kết có thể là một giải pháp thay thế tốt hơn. Bạn nên sử dụng danh sách liên kết thay vì danh sách thông thường trong Python khi chúng ta có hàng triệu phần tử cần lưu trữ và không cần truy cập ngẫu nhiên
  • Kích thước thực tế của danh sách là rất lớn so với số phần tử có trong chúng. Kích thước thực tế của một danh sách là khoảng 1. gấp 5 lần số phần tử có trong nó. Nó đảm bảo rằng chúng ta có đủ bộ nhớ để chèn các phần tử vào danh sách. Tuy nhiên, một danh sách được liên kết không yêu cầu thêm khoảng trắng
  • Khi chúng ta chèn một phần tử vào danh sách liên kết thì chỉ cần lưu trữ. Danh sách cũng yêu cầu vị trí bộ nhớ liền kề. Ngược lại, các nút của danh sách liên kết có thể có mặt ở bất kỳ vị trí nào trong bộ nhớ vật lý. Chúng được kết nối bằng cách sử dụng tài liệu tham khảo
  • Bạn có thể triển khai cả cấu trúc dữ liệu ngăn xếp và hàng đợi một cách hiệu quả bằng cách sử dụng danh sách được liên kết. Mặt khác, việc triển khai hàng đợi bằng cách sử dụng danh sách rất tốn kém về thời gian và phức tạp.

Danh sách liên kết triển khai đầy đủ trong Python

Sau đây là mã chạy đầy đủ để triển khai danh sách được liên kết trong Python với tất cả các phương thức được thảo luận trong bài viết này

class Node:
    def __init__[self, data]:
        self.data = data
        self.next = None


class LinkedList:
    def __init__[self]:
        self.Head = None


myLinkedList = LinkedList[]
myNode1 = Node[10]
myNode2 = Node[20]
myNode3 = Node[30]
myNode4 = Node[40]
myLinkedList.Head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

print["The elements in the linked list are:"]
print[myLinkedList.Head.data, end=" "]
print[myLinkedList.Head.next.data, end=" "]
print[myLinkedList.Head.next.next.data, end=" "]
print[myLinkedList.Head.next.next.next.data]
8

Sự kết luận

Trong bài viết này, chúng ta đã thảo luận về cấu trúc dữ liệu danh sách được liên kết và cách triển khai nó trong Python. Chúng tôi cũng đã triển khai các phương thức cho các hoạt động khác nhau trong danh sách được liên kết

Trong bài viết này, chúng tôi đã thực hiện tất cả các hoạt động bằng cách sử dụng các phương pháp. Bạn cũng có thể triển khai từng thao tác bằng cách sử dụng các hàm lấy đầu vào là _____14 của danh sách được liên kết và trả về phần đầu sau khi thực hiện các thao tác được yêu cầu

Tuy nhiên, điều này sẽ yêu cầu nhiều tài nguyên hơn trong quá trình thực thi. Vì vậy, tôi khuyên bạn nên sử dụng phương pháp được sử dụng trong bài viết này

Chủ Đề