Xóa một Node trong Linked List tại vị trí được nhập vào bàn phím và cập nhật lại Linked List

Chào anh chị ạ, em có một đồ án về việc tạo một hệ thống quản lí sinh viên, trong phần Sửa Khóa học (Edit Course) thì em muốn nhập vào 3 phần tử là Mã Môn học - ID; Lớp - 18CLC; Phòng - I44, nếu một Node nào đó trùng với 3 điều kiện trên thì mình bắt đầu chỉnh sửa lại Node đó (Node bao gồm các thông tin về một khóa học)
Xin anh chị cho em ý tưởng với ạ, giới hạn kiến thức ở linked list trở lại. (Có thể dùng Đệ quy)

Mình chưa hiểu câu hỏi của bạn lắm. Bạn muốn có một cách tối ưu để giải quyết bài toán này hay muốn hỏi cách duyệt và thêm/xoá node trong Linked List?

Mình muốn hỏi cách xóa Node nhưng không ảnh hưởng những Node khác và thay đổi Data trong 1 Node ạ

Đối với một LinkedList thì việc thêm và xoá rất dễ dàng. Một Node trong LinkedList bao gồm ba biến chứa thông tin và một con trỏ đến phần tử tiếp theo. Vậy nên ý tưởng đơn giản là với mỗi phần tử current, bạn kiểm tra các biến của phần tử tiếp theo, tạm gọi là next có bị trùng hay không. Nếu có, bạn tạo một Node mới dựa theo những input, gọi là newNext, và cho current trỏ đến newNext và cho newNext trỏ tới phần tử tiếp theo mà next đang giữ. Vì là C++ nên bạn nhớ giải phóng next nhé.

Xin lỗi mình không viết code mẫu được vì đang trên điện thoại.

2 Likes

Xóa node thì cô lập node ấy ra khỏi linkedlist bằng 1 node tạm. Vd

// xóa
node* temp =  current ;
   current = current->next;
delete temp;
// sửa thì chỉ cần chỉnh sửa thông tin current
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?