Java - Viết chương trình tương tác với một danh sách liên kết chứa các số nguyên dương.
Viết chương trình thực hiện các yêu cầu sau:
- Nhập vào một danh sách liên kết lưu trữ các số nguyên dương và các phần tử cho danh sách này.
- Hiển thị các phần tử lẻ ra màn hình.
- Tìm trong danh sách các phần tử có giá trị chia hết cho 2 và 5.
- In phần tử cuối cùng trong danh sách liên kết.
- Kiểm tra phần tử kế cuối của danh sách là chẵn hay lẻ.
- Đếm xem trong danh sách có bao nhiêu giá trị x, với x được nhập từ bàn phím.
- Xuất ra màn hình giá trị của nút thứ k trong danh sách (k nhập từ bàn phím).
- Xóa phần tử lẻ trong danh sách.
- Xóa phần tử chẵn trong danh sách.
Bài giải
-------------------- ######## --------------------
Bài giải
public static void main(String[] args) {
int n; // số phần tử trong danh sách
int node; // giá trị của phần tử trong danh sách
Scanner scanner = new Scanner(System.in);
Iterator<Integer> iterator;
// khai báo một danh sách liên kết lưu trữ các số nguyên dương
LinkedList<Integer> linkedList = new LinkedList<>();
// khai báo một danh sách liên kết lưu trữ các số lẻ
LinkedList<Integer> linkedListLe = new LinkedList<>();
System.out.println("Nhập vào số phần tử của danh sách: ");
n = scanner.nextInt();
System.out.println("Nhập giá trị của các phần tử trong danh sách: ");
for (int i = 0; i < n; i++) {
System.out.print("Nhập phần tử thứ " + i +": ");
node = scanner.nextInt();
linkedList.add(node);
}
// tạo bản sao của linkedList
// sử dụng phương thức clone()
LinkedList<Integer> linkedListCopy = (LinkedList<Integer>) linkedList.clone();
// HIỂN THỊ CÁC PHẦN TỬ LẺ CÓ TRONG DANH SÁCH RA MÀN HÌNH
for (int i = 0; i < n; i++) {
// số lẻ là số không chia hết cho 2
// chúng ta sẽ kiểm tra phần tử thứ i trong linkedList
// có chia hết chp 2 hay không
// nếu có thì thêm phần tử đó vào trong linkedListLe
if (linkedList.get(i) % 2 != 0) {
linkedListLe.add(linkedList.get(i));
}
}
System.out.println("\nCác phần tử lẻ có trong danh sách là: ");
iterator = linkedListLe.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + "\t");
}
// TÌM TRONG DANH SÁCH CÁC PHẦN TỬ CÓ GIÁ TRỊ CHIA HẾT CHO 2 VÀ 5
System.out.println("\nCác phần tử chia hết cho 2 và 5 có trong danh sách là: ");
for (int i = 0; i < n; i++) {
if ((linkedList.get(i) % 2 == 0) && (linkedList.get(i) % 5 == 0)) {
System.out.print(linkedList.get(i) + "\t");
}
}
// IN GIÁ TRỊ PHẦN TỬ CUỐI CÙNG TRONG DANH SÁCH LIÊN KẾT
// sử dụng phương thức getLast()
System.out.print("\nPhần tử cuối cùng trong danh sách = " +
linkedList.getLast() + "\n");
// KIỂM TRA PHẦN TỬ KẾ CUỐI CỦA DANH SÁCH LÀ CHẴN HAY LẺ
// phần tử kế cuối của danh sách
// là phần tử có chỉ số = size - 2.
int ptKeCuoi = linkedList.get(linkedList.size() - 2);
if (ptKeCuoi % 2 == 0) {
System.out.println("Phần tử kế cuối = " + ptKeCuoi + " là số chẵn");
} else {
System.out.println("Phần tử kế cuối = " + ptKeCuoi + " là số lẻ");
}
// ĐẾM SỐ PHẦN TỬ CÓ GIÁ TRỊ = x TRONG DANH SÁCH
// x được nhập từ bàn phím
int soPhanTu = 0; // số phần tử có giá trị = x trong danh sách
System.out.print("Nhập giá trị x: ");
int x = scanner.nextInt();
for (int i = 0; i < n; i++) {
if (linkedList.get(i) == x) {
soPhanTu++;
}
}
System.out.println("Số phần tử có giá trị = " + x +
" trong danh sách là " + soPhanTu);
// XUẤT RA MÀN HÌNH GIÁ TRỊ CỦA PHẦN TỬ THỨ k TRONG DANH SÁCH
// k NHẬP TỪ BÀN PHÍM
// giá trị của k phải lớn hơn 0 và nhỏ hơn số phần tử tối đa của danh sách
System.out.print("Nhập số k: ");
int k = scanner.nextInt();
while (k < 0 || k > n - 1) {
System.out.print("Nhập lại số k: ");
k = scanner.nextInt();
}
System.out.print("Giá trị của phần tử thứ " + k + " trong danh sách = " +
linkedList.get(k));
// XÓA PHẦN TỬ LẺ TRONG DANH SÁCH
// sử dụng phương thức remove()
for (int i = 0; i < n; i++) {
if (linkedList.get(i) % 2 != 0) {
linkedList.remove(linkedList.get(i));
// sau khi xóa phần tử lẻ thì sẽ giảm số phần tử đi 1
// và giảm i đi 1 (quay lại phần tử đứng trước nó)
// và duyệt lại danh sách
n--;
i--;
}
}
System.out.println("\nCác phần tử còn lại trong danh sách "
+ "sau khi xóa đi các phần tử lẻ: ");
iterator = linkedList.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + "\t");
}
// XÓA PHẦN TỬ CHẴN TRONG DANH SÁCH
// tương tự như khi xóa phần tử lẻ
int m = linkedListCopy.size();
for (int i = 0; i < m; i++) {
if (linkedListCopy.get(i) % 2 == 0) {
linkedListCopy.remove(linkedListCopy.get(i));
// sau khi xóa phần tử chẵn thì sẽ giảm số phần tử đi 1
// và giảm i đi 1 (quay lại phần tử đứng trước nó)
// và duyệt lại danh sách
m--;
i--;
}
}
System.out.println("\nCác phần tử còn lại trong danh sách "
+ "sau khi xóa đi các phần tử chẵn: ");
iterator = linkedListCopy.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + "\t");
}
}
Kết quả sau khi biên dịch chương trình:

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
Câu hỏi thường gặp liên quan:
- Java - Viết chương trình quản lý danh sách thông tin sinh viên.
- Java - Viết chương trình tính trung bình cộng của các số chẵn có trong 1 danh sách liên kết.
- Java - Viết chương trình đảo ngược các phần tử số nguyên dương có trong 1 danh sách liên kết.
- Java - Viết chương trình tương tác với một danh sách liên kết chứa các số nguyên dương.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng