Bài tập List C++: Bẻ liên kết rồi thêm rồi xóa sau đồng thời thêm vào sau

void suaSoChan_X(List &L, int nX)
{
	Node *pNew = createNode(nX);
	Node *p;
	Node *q;
	int nY = timSoChan(L);
	int nVT = timTuanTu(L,nY);
	if ( L.pHeal == NULL || nVT == -1)
	{
		cout <<"Khong du dieu kien de sua!\n";
		return;
	}
	else
	{
		if (nVT == 1)
		{
			p = L.pHeal;
			pNew->pNext = p->pNext;
			L.pHeal = pNew;
			delete p ;
		}
		else
		{
			q = doAdvane(L,nVT - 1);
			p = doAdvane_X(L,nY);
			if (q != NULL)
			{
				pNew ->pNext = p->pNext;
				q->pNext = pNew;
				** if (p == L.pTail)
				{
					p = L.pTail;
					pNew->pNext = NULL;
					q->pNext = pNew;
				} **
				delete p;
			}

		}
	}
}

Chào mọi người!

  • Đề bài : Tìm phần tử là số chẵn đầu tiên trong danh sách sau đó sữa thành một số X được nhập từ bàn phím.

  • int nY = timSoChan(L) : Trả về số chẵn trong danh sách.

  • int nVT = timTuanTu(L,nY) : Trả về vị trí số chẵn đó.

  • q = doAdvane(L,nVT - 1): Trả về con trỏ của vị trí trừ 1 (ví dụ 7 thì trả về con trỏ vị trí phần tử thứ 6)

  • p = doAdvane_X(L,nY): Trả về con trỏ của giá trị số chẵn.

  • Hiện mình đang làm bài tập danh sách liên kết đơn trong c++ , mình sữa ở phần tử đầu và giữa thì được nhưng phần tử cuối thì không được ( cái đoạn mình bỏ trong 2 dấu * ) mong mọi người giúp đỡ . Thanks you!

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