REMOVEDUPLICATES
Xem dạng PDFCho một danh sách liên kết đơn, trong đó mỗi nút được mô tả bởi cấu trúc:
struct Node {
int data;
Node *next;
};
Danh sách được biểu diễn bởi con trỏ head, trỏ tới nút đầu tiên; danh sách kết thúc khi trường next của nút cuối cùng có giá trị NULL.
Nhiệm vụ của bạn là loại bỏ các phần tử trùng lặp trong danh sách sao cho:
Nếu một giá trị xuất hiện nhiều lần,
Chỉ giữ lại nút xuất hiện đầu tiên (tính theo vị trí trong danh sách),
Mọi nút phía sau có cùng giá trị đều phải bị xóa.
Ví dụ: danh sách 5 → 2 → 3 → 2 → 4 → 3 → NULL sẽ trở thành 5 → 2 → 3 → 4 → NULL.
Để thực hiện điều này, bạn cần hoàn thiện một hàm trong mã nguồn của giám khảo (xem template dưới đây).
#include "judgement.h"
// Thư viện này chứa sẵn struct Node và các logic kiểm tra
// Được phép khai báo thêm hàm/biến/thư viện ở đây nếu cần
void removeDuplicates(Node *&head) {
// Hoàn thiện hàm này
}
Thí sinh không được viết hàm main, không được nhập/xuất dữ liệu. Tệp judgment.h sẽ tự động gọi hàm của thí sinh với dữ liệu phù hợp và quản lý việc nhập xuất.
Input
Output
Sample Input 1
6
1 2 2 4 2 6
Sample Output 1
password: 4408904077780410145
1 2 4 6
Bình luận