Simply Linked List Sunday, March 9, 2014 12:03 PM Cài đặt hàm sau: Tạo danh sách liên kết đơn lưu số nguyên dương Trong đó, số lượng phần tử danh sách lưu trữ ban đầu gồm N phần tử phát sinh ngẫu nhiên Gồm thao tác sau: Tạo kiểu liệu Node Tạo kiểu liệu danh sách List Viết hàm tạo danh sách liên kết đơn rỗng Viết hàm tạo nút có trường info X Hàm thêm phần tử có khố X vào danh sách liên kết đơn (thêm đầu / thêm cuối) Hàm thêm cho phép thêm N phần tử vào dslk đơn Viết hàm Xuất danh sách liên kết đơn hình Viết hàm Tìm phần tử có giá trị Y (nhập từ bàn phím) Kết trả true tìm thấy, trả false khơng tìm thấy Sắp xếp DSLK đơn thuật toán xếp Selection Interchange Viết hàm Thêm nút vào danh sách xếp cho danh sách có thứ tự Viết hàm Join thực nối danh sách L1 L2 thành L, cho sau nối ds L1 ds L2 không bị thay đổi Và thay đổi giá trị L không ảnh hưởng đến L1, L2 Input L1, L2 Output L Ví dụ: L1: L2: Sau nối: L: L1: L2: Sau đổi giá trị ds L thành 20 ta được: L: 20 L1: L2: 7 Viết hàm Partition thực phân vùng ds L thành phần: node* pivot, ds L1 ds L2 Biết rằng: pivot node đầu ds L, L1 ds gồm node có trường pivot sau partition ds L rỗng Input: L Output: pivot, L1, L2 Ví dụ: L: DS-A Practice Page L: Sau partition: Pivot: L1: L2: L: Empty 3 4 Viết hàm Join2 thực nối L1 - node *x- ds L2 thành L Sau nối xong L1, L2 rỗng Input: L1, x, L2 Output: L Ví dụ: L1: x: L2: Sau Join: L: L1, L2: Empty Viết thuật toán QuickSort Gợi ý: sử dụng hàm Partition Join2 10 Tạo danh sách lC tăng dần từ danh sách lA lB Ví dụ: Nhập danh sách: 1A: 1B: Kết danh sách lC là: 11 Viết hàm tách đôi danh sách L thành danh sách L1 L2 Nếu L lẻ số lượng phần tử L1 nhận lớn L2 phần tử Ví dụ; L: Sau chia đôi L1: L2: 12 Hoán đổi danh sách liên kết 1A, 1B cho 1A chứa toàn chữ số chẵn 1B chứa tồn chữ số lẻ Ví dụ: Kết danh sách là: 1A: DS-A Practice Page 1A: 1B: DS-A Practice Page