Trong cấu trúc dữ liệu, Danh sách liên kết là một tập hợp tuyến tính của các phần tử dữ liệu. Mỗi phần tử hoặc nút của danh sách bao gồm hai mục - dữ liệu và tham chiếu đến nút tiếp theo. Nút cuối cùng có tham chiếu đến null. Trong một danh sách được liên kết, điểm nhập được gọi là phần đầu của danh sách.
Mỗi nút trong danh sách lưu trữ nội dung và một con trỏ hoặc tham chiếu đến nút tiếp theo trong danh sách, trong một danh sách được liên kết riêng. Danh sách liên kết Singly không lưu trữ bất kỳ con trỏ hoặc tham chiếu nào đến nút trước đó.
Vì nó là một danh sách được liên kết đơn lẻ được sắp xếp, vì vậy các mục dữ liệu trong danh sách được liên kết sẽ vẫn luôn được sắp xếp.
Đây là một chương trình C ++ để triển khai Danh sách được liên kết theo vòng tròn được sắp xếp một cách đơn lẻ
Thuật toán
Begin function createnode () để chèn nút vào danh sách:Nó kiểm tra xem danh sách có trống hay không. Nếu danh sách trống, hãy đặt nút làm phần tử đầu tiên và phần đầu cập nhật. Nếu danh sách không trống, Nó sẽ tạo một newnode và chèn số vào trường dữ liệu của newnode. Bây giờ nút mới sẽ được chèn theo cách mà danh sách được liên kết sẽ vẫn được sắp xếp. Nếu nó được chèn vào cuối cùng, thì nút mới sẽ chỉ vào đầu. Nếu nút mới được chèn vào lúc đầu, thì danh sách liên kết bắt đầu từ đó. Hàm EndBegin hiển thị () để in nội dung danh sách có n số nút:Khởi tạo c =0. Khởi tạo biến con trỏ với địa chỉ bắt đầu while (c <=n ) In thông tin nút Cập nhật biến con trỏ Tăng c.End
Mã mẫu
#includeusing namespace std; struct gật {int d; gật * n;} * p =NULL, * head =NULL, * q =NULL, * np =NULL; int c =0; void createnode (int n) {np =new gật; np-> d =n; np-> n =NULL; if (c ==0) {head =np; p =cái đầu; p-> n =đầu; c ++; } else if (c ==1) {p =head; q =p; if (np-> d d) {np-> n =p; đầu =np; p-> n =np; } else if (np-> d> p-> d) {p-> n =np; np-> n =đầu; } c ++; } else {p =head; q =p; if (np-> d d) {np-> n =p; đầu =np; làm {p =p-> n; } while (p-> n! =q); p-> n =đầu; } else if (np-> d> p-> d) {while (p-> n! =head &&q-> d d) {q =p; p =p-> n; if (p-> n ==head) {p-> n =np; np-> n =đầu; } else if (np-> d d) {q-> n =np; np-> n =p; phá vỡ; }}}}} void display (int i) {gật đầu * t =head; int c =0; while (c <=i) {cout < d <<"\ t"; t =t-> n; c ++; }} int main () {int i =0, n, a; cout <<"nhập số nút \ n"; cin>> n; while (i > a; createnode (a); i ++; } cout <<"danh sách liên kết đơn lẻ đã được sắp xếp" < Đầu ra
nhập giá trị trung tâm của nút