前提・実現したいこと
HackerRankでの問題です。
このコードは
4
2
3
4
1
と入力すると
2 3 4 1
と返してくれるコードで、
Solutionクラスのinsertメソッドの下から2,3行目の
temp.next=node;
return head;
というところで、headがnullではなかった場合にheadの中身は変わらないはずなのに、どうやってheadの中身を更新しているのか分からないため教えていただきたいです。
(質問の内容をうまく表すタイトルが思いつけず、少し違う内容なのはすみません)
該当のソースコード
Java
1import java.io.*; 2import java.util.*; 3 4class Node { 5 int data; 6 Node next; 7 Node(int d) { 8 data = d; 9 next = null; 10 } 11} 12 13class Solution { 14 15 public static Node insert(Node head,int data) { 16 Node node=new Node(data); 17 if(head==null) 18 { 19 head=node; 20 return head; 21 } 22 Node temp=head; 23 while(temp.next!=null) 24 { 25 temp=temp.next; 26 } 27 temp.next=node; 28 return head; 29 } 30 31 public static void display(Node head) { 32 Node start = head; 33 while(start != null) { 34 System.out.print(start.data + " "); 35 start = start.next; 36 } 37 } 38 39 public static void main(String args[]) { 40 Scanner sc = new Scanner(System.in); 41 Node head = null; 42 int N = sc.nextInt(); 43 44 while(N-- > 0) { 45 int ele = sc.nextInt(); 46 head = insert(head,ele); 47 } 48 display(head); 49 sc.close(); 50 } 51}
試したこと
temp.next=node;の前後でSystem.out.println(head.next.data);を試したところ後に書いた方はうまくいき、前に書いたときはNullPointerExceptionになったため、headを更新しているのはこのコードだろうと予測した次第です。
補足情報(FW/ツールのバージョンなど)
HackerRankのエディター内での実行
java8
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。