Một con trăn listnode là gì?

Giống như mảng, Danh sách liên kết là một cấu trúc dữ liệu tuyến tính. Không giống như mảng, các phần tử danh sách được liên kết không được lưu trữ tại một vị trí liền kề; . Chúng bao gồm một loạt các nút được kết nối. Tại đây, mỗi nút lưu trữ dữ liệu và địa chỉ của nút tiếp theo

Một con trăn listnode là gì?

Danh sách liên kết

Tại sao danh sách liên kết?

Mảng có thể được sử dụng để lưu trữ dữ liệu tuyến tính của các loại tương tự, nhưng mảng có những hạn chế sau

  • Kích thước của các mảng là cố định. Vì vậy chúng ta phải biết trước giới hạn trên của số phần tử. Ngoài ra, nói chung, bộ nhớ được phân bổ bằng giới hạn trên bất kể mức sử dụng.  
  • Chèn một phần tử mới/Xóa một phần tử hiện có trong một mảng các phần tử rất tốn kém. Phòng phải được tạo cho các phần tử mới và để tạo phòng các phần tử hiện có phải được dịch chuyển nhưng trong Danh sách được liên kết nếu chúng ta có nút đầu thì chúng ta có thể đi qua bất kỳ nút nào thông qua nút đó và chèn nút mới vào vị trí cần thiết

Ví dụ.
Trong một hệ thống, nếu chúng ta duy trì một danh sách ID được sắp xếp trong một mảng id[] = [1000, 1010, 1050, 2000, 2040].
Nếu muốn chèn ID mới 1005 thì để giữ nguyên thứ tự đã sắp xếp ta phải di chuyển tất cả các phần tử sau 1000 (trừ 1000).

Việc xóa mảng cũng tốn kém trừ khi sử dụng một số kỹ thuật đặc biệt. Ví dụ: để xóa 1010 trong id[], mọi thứ sau 1010 phải được di chuyển do có quá nhiều công việc đang được thực hiện ảnh hưởng đến hiệu quả của mã

Một con trăn listnode là gì?

 

Ưu điểm của Danh sách liên kết so với mảng

  • Mảng động
  • Dễ Chèn/Xóa

Hạn chế của danh sách liên kết.  

  • Truy cập ngẫu nhiên không được phép. Chúng ta phải truy cập các phần tử một cách tuần tự bắt đầu từ nút đầu tiên (nút đầu). Vì vậy, chúng tôi không thể thực hiện tìm kiếm nhị phân với các danh sách được liên kết một cách hiệu quả với cách triển khai mặc định của nó.  
  • Không gian bộ nhớ bổ sung cho một con trỏ được yêu cầu với mỗi phần tử của danh sách.  
  • Không thân thiện với bộ đệm. Vì các phần tử mảng là các vị trí liền kề, nên có vị trí tham chiếu không có trong trường hợp danh sách được liên kết
  • Mất nhiều thời gian duyệt và thay đổi con trỏ
  • Không thể duyệt ngược trong danh sách liên kết đơn
  • Sẽ rất khó hiểu khi chúng ta làm việc với con trỏ
  • Không thể truy cập trực tiếp vào một phần tử trong danh sách được liên kết như trong một mảng theo chỉ mục
  • Tìm kiếm một phần tử rất tốn kém và yêu cầu độ phức tạp thời gian O(n)
  • Việc sắp xếp danh sách liên kết rất phức tạp và tốn kém

Các loại danh sách liên kết

  • Danh sách được liên kết đơn giản – Trong loại danh sách được liên kết này, người ta có thể di chuyển hoặc duyệt danh sách được liên kết theo một hướng duy nhất. Nó còn được gọi là “Danh sách liên kết đơn”
  • Danh sách liên kết kép – Trong loại danh sách được liên kết này, người ta có thể di chuyển hoặc duyệt qua danh sách được liên kết theo cả hai hướng (Tiến và Lùi)
  • Danh sách liên kết tròn – Trong loại danh sách được liên kết này, nút cuối cùng của danh sách được liên kết chứa liên kết của nút đầu tiên/nút đầu của danh sách được liên kết trong con trỏ tiếp theo của nó và nút đầu tiên/nút đầu chứa liên kết của nút cuối cùng của danh sách được liên kết.
  • Danh sách liên kết vòng đôi – Danh sách liên kết vòng đôi hoặc danh sách liên kết hai chiều vòng là một loại danh sách liên kết phức tạp hơn có chứa một con trỏ tới nút tiếp theo cũng như nút trước đó trong chuỗi. Sự khác nhau giữa danh sách kép liên kết kép và danh sách kép vòng cũng giống như sự khác biệt giữa danh sách liên kết đơn và danh sách liên kết vòng. Danh sách liên kết đôi vòng không chứa null trong trường trước đó của nút đầu tiên
  • Danh sách liên kết tiêu đề – Danh sách liên kết tiêu đề là một loại danh sách liên kết đặc biệt có chứa nút tiêu đề ở đầu danh sách.  

Các thao tác cơ bản trên Danh sách liên kết

  • xóa
  • Chèn
  • Tìm kiếm
  • Trưng bày

Biểu diễn danh sách liên kết đơn.  

Một danh sách được liên kết được biểu diễn bằng một con trỏ tới nút đầu tiên của danh sách được liên kết. Nút đầu tiên được gọi là nút đầu của danh sách liên kết. Nếu danh sách liên kết rỗng thì giá trị của phần đầu trỏ tới NULL.  

Mỗi nút trong danh sách bao gồm ít nhất hai phần.  

  • Một Mục dữ liệu (chúng tôi có thể lưu trữ số nguyên, chuỗi hoặc bất kỳ loại dữ liệu nào)
  • Con trỏ (Hoặc Tham chiếu) tới nút tiếp theo (kết nối nút này với nút khác) hoặc Địa chỉ của nút khác

Trong C, chúng ta có thể biểu diễn một nút bằng các cấu trúc. Dưới đây là một ví dụ về nút danh sách được liên kết với dữ liệu số nguyên.
Trong Java hoặc C#, LinkedList có thể được biểu diễn dưới dạng một lớp và Nút dưới dạng một lớp riêng biệt. Lớp LinkedList chứa tham chiếu của loại lớp Node.

C




// A linked list node

struct Node {

    int data;

    struct Node* next;

// A linked list node0

C++




// A linked list node1 Node {

// A linked list node3____04

    int data;

    Node* next;

// A linked list node0

Java




// A linked list node1 struct2

    struct4struct5

 

    struct7

    // A linked list node1 Node {

Node {1int data;

Node {1Node {5

 

Node {1Node {7

Node {1Node {9

Node {1    1

Node {1____33int     5

Node {1    7

    8    9

    8int1____42int3

Node {1int5

    int5

int5

con trăn




int9

// A linked list node1 data;1

 

    data;3

    data;5 data;6data;7data;8

Node {1data;7    1    2     3    4

Node {1_______57____37    8     2 structstruct1

Node {1struct3

 

struct4

 

 

// A linked list node1 struct6

 

    struct8

    Node* next;0

    data;5 data;6data;7Node* next;5

Node {1data;7Node* next;8    2 struct0

C#




// A linked list node1 struct2

    // A linked list node04

    // A linked list node06

    struct4

 

    // A linked list node1 Node {

Node {1int data;

Node {1Node {5

 

Node {1Node {7

Node {1____33int // A linked list node22

    int5

int5

Javascript




// A linked list node26

// A linked list node27 // A linked list node28struct5

 

struct7

    // A linked list node32

        7

    

// A linked list node36Node {7

Node {1Node {9

Node {1    1

Node {1// A linked list node43

________ 38 ________ 045 ________ 046

    8// A linked list node45// A linked list node49int2int3

Node {1int5

    int5

 

// A linked list node56

// A linked list node57

Xây dựng danh sách liên kết đơn giản có 3 nút

Duyệt qua một danh sách được liên kết

Trong chương trình trước, chúng ta đã tạo một danh sách liên kết đơn giản với ba nút. Hãy để chúng tôi duyệt qua danh sách đã tạo và in dữ liệu của từng nút. Để truyền tải, chúng ta hãy viết một hàm đa năng printList() để in bất kỳ danh sách đã cho nào

Chúng tôi thực sự khuyên bạn nên nhấp vào đây và thực hành trước khi chuyển sang giải pháp

C




// A linked list node58

// A linked list node59

 

// A linked list node60

// A linked list node61

 

struct Node {

    int data;

    struct Node* next;

// A linked list node0

 

// A linked list node71

// A linked list node72

// A linked list node73 // A linked list node74struct // A linked list node76

    7

    // A linked list node79 // A linked list node80

Node {1____082____083// A linked list node84// A linked list node85

Node {1// A linked list node87

    int5

int5

 

// A linked list node91

int // A linked list node93

    7

    struct // A linked list node97

    struct struct00

    struct struct03

 

    struct05

    struct07struct struct09struct10// A linked list node83struct12// A linked list node83struct struct15

    struct17struct struct09struct10// A linked list node83struct12// A linked list node83struct struct15

    struct27struct struct09struct10// A linked list node83struct12// A linked list node83struct struct15

ListNode có nghĩa là gì trong Python?

ListNode không phải là lớp python chung. Nó được định nghĩa là cái trong tiêu đề đã nhận xét của mã của bạn .

Sự khác biệt giữa danh sách và ListNode là gì?

ListNode là một nút trong danh sách liên kết. SingleList là danh sách được liên kết . Để rút ra một sự tương tự - một nút là một liên kết trong một chuỗi; .

Loại ListNode là gì?

Đây là nút dành cho danh sách liên kết đơn, có khả năng chứa một loại Đối tượng . Một ListNode 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) ListNode tiếp theo trong chuỗi.

ListNode tùy chọn có nghĩa là gì trong Python?

Đó là cho phép các giá trị có thể là Không có . Ví dụ. Đây là tất cả các nút danh sách. (3 -> 1 -> Không) Ví dụ. # Sử dụng Tùy chọn [] cho các giá trị có thể là Không có x. Tùy chọn[str] = some_function()