c++ 아래 짧은 링크드 리스트 코드중 2가지 궁금한것

ee 76.***.207.158

허접하게 보인다니…다들 대단들 하세요. 널체크는 사실 중요한거 아니고. 나는 솔직히 이거 링크드 리스트 볼때는 그때는 이해했다고 생각되드라도, 일주일만 안보다가 다시 보면 내가 그전에 이해했던 모든 포인터의 장난 논리가 다 허공 어딘가로 날라가버리고 모든게 다 다시 헷갈리기 시작하는데…ㅋㅋㅋ (**) 와 (*&) 차이도 그렇고 ㅋㅋ ㅋ

원글은 다른거보다,
temp 와 head 포인터들 때문에 헷갈려서 올린거에요. 헤드를 템프에 어싸인해주었으니, 사실 템프가 헤드와 같은 메모리를 포인팅하는 걸로 그냥 생각해버리면 되는데..그래서 결국 템프 포인터는 헤드 포인터와 같은것인데, 어쩐지 두 변수가 자꾸 포인터가 아닐경우처럼, 말하자면 인티저 변수일 경우처럼, 템프는 헤드로 초기화시켜주었을뿐 서로 다른거처럼 그래서 헤드는 계속해서 안변하고 그대로 있고 템프만 계속 변하는걸로 그런식으로 계속 해서 생각되어서 말이죠. 결국은 이 경우는 포인터 타입들이니까 템프가 곧 헤드와 같은것인데… 그래서 굳이 // head=temp; 를 쓰지 않아도 되는데 이걸 써줘야 이해가 분명해지는것처럼 생각되고….ㅋㅋㅋ …우 진짜 …헷갈려. 사실 이런 방식이 계속 트리에서도 쓰는 방식인데….그리고 위의 print() 에서도 써먹은 방법이고요. insertAfter() 에서도 솔직히 temp를 도입할 필요가 처음부터 없었고 temp 대신 head 로 그냥 다 써버려도 아무 문제없이 똑같은 함수이고,
print() 에서도 마찬가지로,

void print2(node*& head)
{
	//node* temp = head;   // 이거 솔직히 필요없는데 굳이 필요한걸로 계속 혼동되.   아니, 필요한가? 아냐 필요없을거야? 아니, 그래도 필요한 상황이 있는가? 아...몰라 몰라...ㅋㅋㅋ ㅋㅋ  ㅋ 뭘 여기까지 엿보고 그래? ㅋㅋㅋ 🤣🤣🤣🤑

	while (head != NULL) {
		cout << head->data << " -> ";
		head = head->next;
	}
	cout << "NULL" << endl;
}

사실 print2( ) 와 print () 가 이그잭틀리 같은것인데….내 머리한켠에서는 자꾸 ” 아니야 같지 않아…프린트()가 프린트2() 보다 더 안전한 방법이야”…(마찬가지로 head 를 직접써주는것보다 살짝 temp 로 바꾸어서 써주는 insertAfter 함수가 더 안전한 함수야 라고) 이렇게 자꾸 생각하게 된단 말이죠. 물론 이 경우야 두 함수가 동일하지만, 굳이 //node* temp = head; 를 써줘야 안전한 경우가 있긴 있겟죠.