30/09/2018, 16:35
Cách xóa 1 Node trong danh sách liên kết đơn
Giả sử ta có một danh sách liên kết đơn với thành phần dữ liệu của một nút là số nguyên và dữ liệu của các Node
trong danh sách liên kết là đôi một khác nhau. Hàm Xoa
của mình dùng để xóa Node có dữ liệu là số nguyên x
.
void Xoa(Node* &pHead, int x){
Node* tam = pHead;
while(tam != NULL){
// xoa Node dau tien.
if(tam == pHead && tam -> data == x){
Node *tam1 = tam;
pHead = tam -> next;
free(tam1);
return;
}
// xoa Node cuoi cung.
else if(tam -> data == x && tam -> next == NULL){
Node* tam1 = tam;
tam = NULL;
free(tam1);
return;
}
// xoa Node bat ky nhung khong phai la cuoi cung va dau tien.
else if(tam -> data == x){
Node* tam1 = tam;
tam = tam -> next;
free(tam1);
return;
}
tam = tam -> next;
}
}
Mình viết thế này đã được chưa vậy. Nhờ các bạn trong diễn đàn cho ý kiến với.
Bài liên quan
Bạn thử xóa 1 node ở giữa xong cho in list ra xem kết quả có vấn đề gì không.