Code xóa phần từ cuối danh sách liên kết không xoá được

Dạ đây là bài code của em:

// Xoa Node cuoi cung cua mot List cho truoc
void removeTail(List*& L)
{
	NODE* p;
	if (L->p_head == L->p_tail)
	{
		delete(L->p_head);
		L->p_head = L->p_tail = NULL;
	}
	else
	{
		for (p = L->p_head; p->p_next!=L->p_tail; p = p->p_next);
			delete(L->p_tail);
			L->p_tail = p;
			p->p_next = NULL;
		
	}
}

Đáng lý là sau khi chạy xong thì nó phải xóa đi một phần tử, những mà nó không xóa được. Mong mọi người chỉ em thử là em sai chỗ nào z ???
Cảm ơn mn nhiều!

Lần đầu tiên trong đời mình thấy có người viết vòng for như này.
Bạn đã debug chưa, xem code cho chạy vòng for giống như bạn mong muốn chưa?

Um vòng lặp của mình bị sao z bạn ???
(vì không chạy đúng theo yêu cầu nên mình mới hỏi nè T_T !!!)

Gợi ý của mình:
Khi sử dụng for thì cuối vòng for, biểu thức thứ 3 được thực hiện. Tức là p = p->p_nextp->p_next lúc này đang trỏ tới tail.
Đặt debug lại dòng delete, đọc giá trị p, p_tail xem.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?