Bài 31.3. Sàng lọc Giao dịch Trùng lặp - [Độ khó: Khá]
Bài 31.3. Sàng lọc Giao dịch Trùng lặp - [Độ khó: Khá]
Trong hệ thống theo dõi giao dịch tài chính, việc đảm bảo mỗi giao dịch được ghi nhận chính xác một lần là cực kỳ quan trọng. Đôi khi, do lỗi mạng hoặc người dùng thực hiện lại, các giao dịch có thể bị trùng lặp. Bạn được yêu cầu phát triển một chức năng để "làm sạch" danh sách các giao dịch bằng cách loại bỏ tất cả các bản ghi trùng lặp, chỉ giữ lại bản ghi đầu tiên của mỗi giao dịch duy nhất.
Cấu trúc dữ liệu
Sử dụng một cấu trúc Node
cơ bản cho danh sách liên kết đơn để lưu trữ thông tin về mỗi giao dịch. Mỗi Node
sẽ có:
id_giao_dich
: Một số nguyên đại diện cho ID của giao dịch. ID này có thể bị trùng lặp nếu là giao dịch bản sao.so_tien
: Một số nguyên thể hiện số tiền của giao dịch.next
: Con trỏ tớiNode
tiếp theo trong danh sách.
INPUT FORMAT
Dòng đầu tiên chứa số nguyên N
(1 <= N <= 1000), số lượng giao dịch ban đầu.
Dòng thứ hai chứa N
số nguyên, là id_giao_dich
của các giao dịch ban đầu, cách nhau bởi dấu cách. (Giả sử so_tien
của mỗi giao dịch là 1 để đơn giản).
Sau khi xây dựng danh sách, chương trình của bạn sẽ tự động gọi hàm loại bỏ trùng lặp và sau đó hiển thị kết quả.
OUTPUT FORMAT
In ra các id_giao_dich
của danh sách sau khi đã loại bỏ các bản ghi trùng lặp, mỗi ID cách nhau bởi một dấu cách.
Nếu danh sách trống, in ra "Danh sach rong."
Ví dụ 1:
Input:
7
1 2 3 2 4 1 5
Output:
1 2 3 4 5
Giải thích:
- Danh sách ban đầu:
1 -> 2 -> 3 -> 2 -> 4 -> 1 -> 5
. - Giao dịch ID
1
xuất hiện lần đầu ở vị trí 1. Giao dịch ID1
tiếp theo ở vị trí 6 sẽ bị xóa. - Giao dịch ID
2
xuất hiện lần đầu ở vị trí 2. Giao dịch ID2
tiếp theo ở vị trí 4 sẽ bị xóa. - Các giao dịch
3, 4, 5
là duy nhất. - Danh sách cuối cùng:
1 -> 2 -> 3 -> 4 -> 5
.
Ví dụ 2:
Input:
5
7 7 7 7 7
Output:
7
Giải thích:
- Danh sách ban đầu:
7 -> 7 -> 7 -> 7 -> 7
. - Chỉ giữ lại bản ghi đầu tiên của ID
7
, các bản ghi7
còn lại bị xóa. - Danh sách cuối cùng:
7
.
Comments