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.

... viết 18:51 ngày 30/09/2018
		// 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;
	}
}

Bạn thử xóa 1 node ở giữa xong cho in list ra xem kết quả có vấn đề gì không.

Bài liên quan
0