30/09/2018, 18:37

Cần giúp đỡ về Linked list c++

int Xoa(Danhsach &s)
{
int x;
cout << "Ban can xoa phan tu co mssv bao nhieu: ";
cin >> x;
sinhvien *timkiem;
timkiem = s.dau;
if (timkiem == NULL)
cout << "
Danh sach rong! 
";
else
{
sinhvien *xoa;
if (timkiem->mssv == x)
{
xoa = s.dau;
s.dau = s.dau->next;
delete xoa;
output(s);
return 0;
}
while (timkiem != NULL && timkiem->next->mssv != x)
timkiem = timkiem->next;
if (timkiem != NULL)
{	
xoa = timkiem->next;//kho hieu ??
timkiem->next = xoa->next;
delete xoa;
}
else
cout << "Khong tim thay";
}

Ở cái phần e cmt kho hieu?? ấy tại sao lúc đó mình tìm được sinh viên có mssv là x rồi sao lại gán xoa = timkiem->next .e hơi khó hiểu cái này mong mn gt dùm ạ :3

Đỗ Trung Quân viết 20:41 ngày 30/09/2018

Em sửa lại bài có markdown đầy đủ, nếu qua ngày không có anh sẽ khóa bài.

... viết 20:43 ngày 30/09/2018

while (timkiem != NULL && timkiem->next->mssv != x)

Đưa con trỏ tìm kiếm đến vị trí trước sinh viên cần xóa.

if (timkiem != NULL)

Nếu con trỏ tìm kiếm khác NULL, nghĩa là phần tử cần xóa tồn tại.

xoa = timkiem->next;

phần tử cần xóa là phần tử đứng sau con trỏ tìm kiếm (Như đã nói ở trên)

timkiem->next = xoa->next;

nối con trỏ tìm kiếm đứng trước vị trí cần xóa với con trỏ đứng sau vị trí cần xóa.

Bạn không tự vẽ hình ra để liên tưởng thì khó có thể học danh sách liên kết.

Bài liên quan
0