Thêm vào cuối danh sách liên kết đơn

em có hai đoạn code

void Insert_Last1(Node *&pNode, int x) {
	Node *P;

	P = CreateNode(x);
	if (pNode == NULL) {
		pNode = P;
	}
	else {
		//Node *temp = new Node;
		//temp = pNode;
		while (pNode->pNext != NULL) {
			pNode = pNode->pNext;
		}


		pNode->pNext = P;
		
		
	}
}


void Insert_Last2(Node *&pNode, int x) {
	Node *P;

	P = CreateNode(x);
	if (pNode == NULL) {
		pNode = P;
	}
	else {
		Node *temp = new Node;
		temp = pNode;
		while (temp->pNext != NULL) {
			temp = temp->pNext;
		}


		temp->pNext = P;
		
		
	}
}

biến temp trong đoạn code 2 có ý nghĩa như thế nào vậy ạ, gây ảnh hưởng gì đến biến pNode , theo em nghĩ nó cũng giống pNode nhưng sau khi em thay temp bằng pNode (đoạn code 1) thì nó lại chạy sai kết quả
Input: 1 2 3 4 5
Insert_Last1 ouput : 4 5
Insert_Last2 ouput : 1 2 3 4 5

pNode là đại diện cho danh sách ban đầu mà :gach: sao bạn lại dùng nó như 1 biến lặp vậy :smiley:

1 Like

vậy khi temp thêm vào 1 node thì cũng làm pNode thay đổi luôn hả bạn ???

Không bạn, pNode không đổi.

1 Like

pNode vẫn là node đó, nhưng pNode -> pNext trỏ đến node mới

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