Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để triển khai danh sách liên kết đơn lẻ đã được sắp xếp

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 đó.

Phát triển một chương trình C ++ để triển khai danh sách liên kết đơn đã được sắp xếp.

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. Khởi tạo con trỏ tiếp theo với NULL. Nếu danh sách không trống, Nó 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 trỏ đến NULL. 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

 #include  using 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 đã được sắp xếp" < 

Đầu ra

 nhập giá trị trung tâm của nút