Hướng dẫn what is optional listnode in python? - listnode tùy chọn trong python là gì?
Một danh sách được liên kết là một trong những cấu trúc dữ liệu phổ biến nhất được sử dụng trong khoa học máy tính. Nó cũng là một trong những thứ đơn giản nhất, và cũng như cơ bản cho các cấu trúc cấp cao hơn như ngăn xếp, bộ đệm tròn và hàng đợi. Show
Nói chung, một danh sách là một tập hợp các yếu tố dữ liệu đơn được kết nối thông qua các tài liệu tham khảo. C Lập trình viên biết điều này như con trỏ. Ví dụ, một yếu tố dữ liệu có thể bao gồm dữ liệu địa chỉ, dữ liệu địa lý, dữ liệu hình học, thông tin định tuyến hoặc chi tiết giao dịch. Thông thường, mỗi yếu tố của danh sách được liên kết có cùng loại dữ liệu dành riêng cho danh sách. Một phần tử danh sách duy nhất được gọi là một nút. Các nút không giống như các mảng được lưu trữ tuần tự trong bộ nhớ. Thay vào đó, nó có khả năng tìm thấy chúng ở các phân đoạn bộ nhớ khác nhau mà bạn có thể tìm thấy bằng cách theo các con trỏ từ nút này sang nút khác. Người ta thường đánh dấu phần cuối của danh sách với phần tử NIL, được biểu thị bằng Python tương đương 9.Hình 1: Danh sách liên kết đơn Có tồn tại hai loại danh sách - danh sách đơn và liên kết kép. Một nút trong danh sách liên kết đơn chỉ chỉ vào phần tử tiếp theo trong danh sách, trong khi một nút trong danh sách liên kết kép cũng chỉ vào nút trước đó. Cấu trúc dữ liệu chiếm nhiều không gian hơn vì bạn sẽ cần một biến bổ sung để lưu trữ tham chiếu thêm. Hình 2: Danh sách liên kết kép Một danh sách liên kết đơn có thể được chuyển từ đầu đến đuôi trong khi đi qua phía sau không dễ dàng như vậy. Ngược lại, một danh sách liên kết kép cho phép đi qua các nút theo cả hai hướng với cùng một chi phí, bất kể bạn bắt đầu nút nào. Ngoài ra, việc thêm và xóa các nút cũng như phân tách các danh sách liên kết đơn được thực hiện trong không quá hai bước. Trong một danh sách liên kết kép, bốn gợi ý phải được thay đổi. Ngôn ngữ Python không chứa kiểu dữ liệu được xác định trước cho các danh sách được liên kết. Để đối phó với tình huống này, chúng tôi phải tạo loại dữ liệu của riêng mình hoặc phải sử dụng các mô -đun Python bổ sung cung cấp triển khai loại dữ liệu như vậy. Trong bài viết này, chúng tôi sẽ trải qua các bước để tạo cấu trúc dữ liệu danh sách được liên kết của riêng chúng tôi. Đầu tiên chúng tôi tạo một cấu trúc dữ liệu tương ứng cho nút. Thứ hai, bạn sẽ học cách thực hiện và sử dụng cả danh sách liên kết đơn và cuối cùng là danh sách liên kết kép. Bước 1: Node dưới dạng cấu trúc dữ liệuĐể có cấu trúc dữ liệu chúng tôi có thể làm việc, chúng tôi xác định một nút. Một nút được triển khai dưới dạng một lớp có tên 0. Lớp chứa định nghĩa để tạo một thể hiện đối tượng, trong trường hợp này, với hai biến - 1 để giữ giá trị nút và 2 để lưu trữ tham chiếu đến nút tiếp theo trong danh sách. Hơn nữa, một nút có các phương thức và thuộc tính sau:
Các phương pháp này đảm bảo rằng chúng tôi có thể khởi tạo một nút đúng với dữ liệu của chúng tôi ( 7) và bao gồm cả trích xuất và lưu trữ dữ liệu (thông qua thuộc tính 4) cũng như nhận được tham chiếu đến nút được kết nối (thông qua thuộc tính 5). Phương pháp 6 cho phép chúng ta so sánh giá trị nút với giá trị của một nút khác.Liệt kê 1: Lớp ListNode
Tạo một nút đơn giản như vậy và khởi tạo một đối tượng của lớp 0:Liệt kê 2: khởi tạo các nút
Đã thực hiện rằng chúng tôi có sẵn ba trường hợp của lớp 0. Các trường hợp này biểu thị ba nút độc lập có chứa các giá trị 15 (số nguyên), 8.2 (float) và "berlin" (chuỗi).Bước 2: Tạo một lớp cho một danh sách liên kết đơnLà bước thứ hai, chúng tôi xác định một lớp có tên 3 bao gồm các phương thức cần thiết để quản lý các nút danh sách của chúng tôi. Nó chứa các phương pháp sau:
Chúng tôi sẽ trải qua từng phương pháp này từng bước. Phương pháp 7 xác định hai biến lớp bên trong có tên 1 và 2. Chúng đại diện cho các nút bắt đầu và kết thúc của danh sách. Ban đầu, cả 1 và 2 đều có giá trị 9 miễn là danh sách trống.Liệt kê 3: Lớp SinglelinkedList (Phần một)
Bước 3: Thêm nútThêm các mục vào danh sách được thực hiện thông qua 7. Phương pháp này yêu cầu một nút như một tham số bổ sung. Để đảm bảo rằng đó là một nút thích hợp (một thể hiện của lớp 0), tham số trước tiên được xác minh bằng cách sử dụng hàm Python tích hợp 8. Nếu thành công, nút sẽ được thêm vào cuối danh sách. Nếu 9 không phải là 0, thì một cái được tạo ra.Trong trường hợp danh sách là (vẫn) trống, nút mới trở thành người đứng đầu danh sách. Nếu một nút đã có trong danh sách, thì giá trị của đuôi được điều chỉnh cho phù hợp. Liệt kê 4: Lớp SinglelinkedList (Phần hai)
Phương pháp 5 đếm các nút và trả về độ dài của danh sách. Để nhận từ một nút này sang nút tiếp theo trong danh sách thuộc tính nút 5 phát huy tác dụng và trả lại liên kết đến nút tiếp theo. Đếm các nút được thực hiện trong một vòng lặp trong một thời gian miễn là chúng ta không đạt đến cuối danh sách, được biểu thị bằng liên kết 9 đến nút tiếp theo.Liệt kê 5: Lớp SinglelinkedList (Phần ba)
Phương thức 6 xuất các giá trị nút bằng cách sử dụng thuộc tính nút 1. Một lần nữa, để lấy từ một nút này sang nút tiếp theo, liên kết được sử dụng được cung cấp thông qua thuộc tính 2.Liệt kê 6: Lớp SinglelinkedList (Phần bốn)
Dựa trên lớp 3, chúng tôi có thể tạo một danh sách thích hợp có tên 8 và chơi với các phương thức của nó như đã được mô tả ở trên trong Danh sách 3-6. Do đó, chúng tôi tạo bốn nút danh sách, đánh giá chúng trong vòng lặp 9 và xuất nội dung danh sách. Liệt kê 7 chỉ cho bạn cách lập trình và liệt kê 8 cho thấy đầu ra.Liệt kê 7: Tạo các nút và đầu ra danh sách
Đầu ra như sau và cho thấy danh sách phát triển như thế nào: Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó! Liệt kê 8: Thêm nút vào danh sách
Bước 4: Tìm kiếm danh sáchTìm kiếm toàn bộ danh sách được thực hiện bằng phương pháp 8. Nó yêu cầu một tham số bổ sung cho giá trị được tìm kiếm. Người đứng đầu của danh sách là điểm khởi đầu.Trong khi tìm kiếm, chúng tôi đếm các nút. Để chỉ ra một trận đấu, chúng tôi sử dụng số nút tương ứng. Phương thức 8 trả về một danh sách các số nút đại diện cho các trận đấu. Ví dụ, cả nút thứ nhất và thứ tư đều chứa giá trị 15. Tìm kiếm cho 15 kết quả trong danh sách với hai phần tử: 2.Liệt kê 9: Phương thức tìm kiếm unetered_search ()
Bước 5: Loại bỏ một mục khỏi danh sáchLoại bỏ một nút khỏi danh sách yêu cầu điều chỉnh chỉ một tham chiếu - cái trỏ vào nút để được xóa bây giờ phải trỏ đến cái tiếp theo. Tham chiếu này được giữ bởi nút để được gỡ bỏ và phải được thay thế. Trong nền, người thu gom rác Python chăm sóc các vật thể không được giới thiệu và dọn dẹp. Phương pháp sau đây được đặt tên là 9. Là một tham số, nó đề cập đến số lượng của nút tương tự như giá trị được trả về bởi 8.Liệt kê 10: Xóa một nút theo số nút
Bước 6: Tạo danh sách liên kết képĐể tạo một danh sách liên kết kép, cảm giác tự nhiên chỉ để mở rộng lớp 0 bằng cách tạo một tham chiếu bổ sung cho nút trước đó. Điều này ảnh hưởng đến các phương pháp để thêm, loại bỏ và sắp xếp các nút. Như được hiển thị trong Danh sách 11, một thuộc tính mới có tên 6 đã được thêm vào để lưu trữ con trỏ tham chiếu đến nút trước đó trong danh sách. Chúng tôi sẽ thay đổi các phương thức của chúng tôi để sử dụng thuộc tính này để theo dõi và đi qua các nút.Danh sách 11: Lớp Node Danh sách mở rộng 0Bây giờ chúng tôi có thể xác định một danh sách liên kết kép như sau: Liệt kê 12: Lớp DoubLelinkedList 1Như được mô tả trước đó, việc thêm các nút đòi hỏi thêm một chút hành động. Liệt kê 13 cho thấy cách thực hiện điều đó: Liệt kê 13: Thêm các nút trong danh sách liên kết kép 2Loại bỏ một mục khỏi danh sách các chi phí tương tự phải được tính đến. Liệt kê 14 cho thấy cách làm điều đó: Liệt kê 14: Xóa một mục khỏi danh sách liên kết kép 3Liệt kê 15 cho thấy cách sử dụng lớp trong chương trình Python. Liệt kê 15: Xây dựng danh sách liên kết kép 4Như bạn có thể thấy, chúng ta có thể sử dụng lớp chính xác như trước đây khi nó chỉ là một danh sách liên kết đơn. Thay đổi duy nhất là cấu trúc dữ liệu nội bộ. Bước 7: Tạo danh sách liên kết kép với DequeVì các kỹ sư khác đã phải đối mặt với cùng một vấn đề, chúng tôi có thể đơn giản hóa mọi thứ cho chính mình và sử dụng một trong số ít các triển khai hiện có có sẵn. Trong Python, chúng ta có thể sử dụng đối tượng deque từ mô -đun 7. Theo tài liệu mô -đun:
Ví dụ: đối tượng này chứa các phương thức sau:
Cấu trúc dữ liệu cơ bản của 8 là một danh sách python được liên kết kép. Nút danh sách đầu tiên có chỉ số 0. Sử dụng 8 dẫn đến sự đơn giản hóa đáng kể của lớp 0. Điều duy nhất chúng tôi giữ là biến lớp 1 để lưu trữ giá trị nút. Liệt kê 16 như sau:Liệt kê 16: ListNode Class với deque (đơn giản hóa) 5Định nghĩa về các nút không thay đổi và tương tự như liệt kê 2. Với kiến thức này, chúng tôi tạo một danh sách các nút như sau: Liệt kê 17: Tạo một danh sách với Deque 6Thêm một mục ở đầu danh sách hoạt động với phương thức 9 như liệt kê 18 hiển thị:Danh sách 18: Thêm một phần tử ở đầu danh sách 7Tương tự, 8 thêm một nút ở cuối danh sách như danh sách 19 cho thấy:Liệt kê 19: Thêm một phần tử ở cuối danh sách 8Sự kết luậnDanh sách được liên kết là cấu trúc dữ liệu dễ thực hiện và cung cấp tính linh hoạt sử dụng tuyệt vời. Nó được thực hiện với một vài dòng mã. Là một cải tiến, bạn có thể thêm một bộ đếm nút - một biến lớp chỉ đơn giản là giữ số lượng nút trong danh sách. Điều này làm giảm việc xác định độ dài danh sách thành một thao tác duy nhất với O (1) và bạn không phải đi qua toàn bộ danh sách. Để đọc thêm và triển khai thay thế, bạn có thể có một cái nhìn ở đây:
Sự nhìn nhậnTác giả xin cảm ơn Gerold Rupprecht và Mandy Neumey vì sự hỗ trợ của họ, và nhận xét trong khi chuẩn bị bài viết này. ListNode có nghĩa là gì trong Python?Một nút được triển khai như một lớp có tên listnode. Lớp chứa định nghĩa để tạo một thể hiện đối tượng, trong trường hợp này, với hai biến - dữ liệu để giữ giá trị nút và bên cạnh lưu trữ tham chiếu đến nút tiếp theo trong danh sách. . The class contains the definition to create an object instance, in this case, with two variables - data to keep the node value, and next to store the reference to the next node in the list.
ListNode là gì?Đây là một nút cho một danh sách liên kết đơn, có khả năng giữ một loại đối tượng. Một mã danh sách bao gồm hai thành viên dữ liệu: dữ liệu chúng tôi đang theo dõi tại nút này (đối tượng) mã danh sách tiếp theo trong chuỗi.a node for a singly-linked list, which is capable of holding an type of Object. A ListNode consists of two data members: The data we are keeping track of at this node (Object) The next ListNode in the chain.
Danh sách được liên kết trong Python là gì?Khoa học dữ liệu thực tế bằng cách sử dụng Python Một danh sách được liên kết là một chuỗi các yếu tố dữ liệu, được kết nối với nhau thông qua các liên kết.Mỗi phần tử dữ liệu chứa một kết nối với phần tử dữ liệu khác dưới dạng con trỏ.Python không có danh sách liên kết trong thư viện tiêu chuẩn của nó.a sequence of data elements, which are connected together via links. Each data element contains a connection to another data element in form of a pointer. Python does not have linked lists in its standard library.
Đầu tự ở Python là gì?Head "Đơn giản chỉ cần đề cập đến nơi bạn đang đi qua danh sách, vì vậy sự khác biệt giữa nói:" Tự.Đầu là nút hiện tại, vì vậy tự.cái đầu.Tiếp theo là nút tiếp theo "và" n = self.cái đầu.the current node, so self. head. next is the next node" and "n = self. head. |