작성
·
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
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이 나올때까지 다 처리하는겁니다.
주소값을 찍어 보셔도 되지만 , 큰그림으로 저렇게 끝까지 가는거구나
이걸 이해하시면 될거 같아요
이해 안되시면 더 질문을 남겨주세요~
감사합니다.