인프런 커뮤니티 질문&답변

BeginnerCoder님의 프로필 이미지

작성한 질문수

정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)

K개의 정렬된 리스트 병합_Heap_코딩

참조값 차이 문의드립니다.

작성

·

147

1

p = p.next;

위의 코드 바로 다음에 아래처럼 로그를 출력하면

전 p 와 p.next의 참조값이 동일하게 나올거라 생각했는데

다르게 나옵니다.

제가 잘못이해하고 있는걸까요?

System.out.println("\n p2:"+ p + " / p.next:"+ p.next );

테스트로 아래처럼 해보면

ListNode tmpP = p;

ListNode tmpP2 = p.next;

tmpP 와 p   tmpP2 와 p.next는  각각 서로 같고

두쌍은 서로 다릅니다.

ListNode tmpP2 = p.next; 가 

tmpP2 와 p.next 가 같으므로

당연히 p = p.next 의

p와 p.next도 같아야된다고 생각하느데 다른 참조값이 나옵니다.

(결과는 정상적으로 나옵니다)

추가로 체크해봤는데

p.next = node;

 p = p.next;

에서

아래 처럼 둘은  참조값이 같네요

p.next ==  node.next;

p == node. 

혹심 몰라 말씀드립니다

답변 2

0

BeginnerCoder님의 프로필 이미지
BeginnerCoder
질문자

2020. 11. 08. 01:51

이해되었습니다......

제가 LinkedList 이해를 잘못한것같습니다

제 질문자체가 애당초 링크드리스트에 대한 잘못된 이해에서 비롯된것이네요.

링크드리스트를 제대로 이해했다면 절대로 나오지않을 질문이네요 ㅎㅎ

답변 감사합니다.

0

푸샵맨 코딩스터디님의 프로필 이미지

2020. 10. 29. 06:04

안녕하세요~

이 질문에 답변이 안되어 있었네요..(너무 늦게 답변을 달아서 죄송합니다.)

비슷한 질문을 주신거 같은데요.

이 문제가 이해가 안가시면 AddTwoNumbers문제를 보시면 됩니다.

우리가 ListNode예제를 만들때

ListNode list = new ListNode(1);

list.next = new ListNode(2);

list.next.next = new ListNode(3);

list.next.next.next = new ListNode(4);

이런식으로 .next를 이용해서 다음 값으로 셋팅하잖아요

1-2-3-4-5 이런식으로 next를 통해서 연결되어 있습니다.

질문 주신 내용을 대입해 보면

1-2-3-4-5 이런식으로 next를 통해서 연결 상태에서

p = p.next; 이부분은    p = 1.next  =>  즉 p = 2-3-4-5

이렇게 생각을 할 수 있죠

한만디로 1을 처리했으니 다음 2를 처리하러 가는거죠

 p = 2.next  =>  즉 p = 3-4-5

 p = 3.next  =>  즉 p = 4-5

..

이런식으로 5까지 가서 null이 나올때까지 다 처리하는겁니다.

주소값을 찍어 보셔도 되지만  , 큰그림으로 저렇게 끝까지 가는거구나

이걸 이해하시면 될거 같아요

이해 안되시면 더 질문을 남겨주세요~

감사합니다.