(cf. linkedlist ---head, tail, size, node)
addFirst를 구현해보자.
오타난걸 캡쳐했다.. 화살표가 가리키는 곳에 imput 아니고 input이다.
가장 먼저 input을 받아서 노드 객체를 생성해야 하므로
Node newNode = new Node(input);
>>만들어 놓은 Node 클래스를 객체화한 것이다! "노드 객체를 생성"
addFirst()가 호출 될 때마다 새로운 노드를 만든다.
Node newNode = new Node(input);
이게 있으니까! ^-^ addFirst로 노드 객체를 만드는 거다.
Node 클래스의 생성자인 public Node(Object input) 부분에 input값이 들어갈 거고,
(자바: 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 생성자(constructor) 라는 메소드를 제공한다.)
그에따라 data변수에 input값이, next에 null이 들어간다.
>>numbers.addFirst(30); 면
30이라는 data값을 가지는 Node 객체를 생성한 것임.
생성자란? (더보기)
addFirst가 호출되어서 인자 하나 들어오면
Node(클래스) 자료형으로 하는 객체 (=>노드 객체)를 new연산자를 통해서 생성한다
(이 객체는 힙 영역에 저장~.~ 혼공자 책에서 메모리 영역 공부하니까 이해가 된다)
newNode변수로 그 객체를 다룬다.
헤드에 newNode를 대입하고
size++(새로운 노드를 추가했으니까)
19줄: 새로운 노드가 추가되면, 그 노드 다음 값이 헤드를 가르키게 한다.
그리고 헤드에 새로운 노드를 대입한다.
그럼 원래 이전 헤드는 그냥 새로운 헤드의 다음 값이 되는 거다용
'자료구조 + 알고리즘' 카테고리의 다른 글
[자료구조] LinkedList 구현 - node API 구현하기 [JAVA] (0) | 2020.07.07 |
---|---|
[자료구조] LinkedList 구현 - 데이터 추가 / addLast[Java] (0) | 2020.07.06 |
[자료구조] LinkedList 구현 - 객체생성[Java] (0) | 2020.04.21 |
[자료구조] Linked list 데이터 조회 [VisuAlgo.net] (0) | 2020.04.02 |
[자료구조] Linked list 데이터 삭제 [VisuAlgo.net] (0) | 2020.04.02 |