티스토리 뷰
- addAfter(Node<T> before, T item)
- 만들고자 하는 구조
- before노드 > new 노드 > 다음 노드
- 순서
- new 노드를 만들고 데이터를 저장
- new 노드의 next필드가 다음 노드를 가르키도록 함
- before 노드의 next필드가 new노드를 가르키도록 함
- 만들고자 하는 구조
public void addAfter(Node<T> before, T item) {
Node<T> temp = new Node<T>(item);
temp.next = before.next;
before.next = temp;
size++;
}
- addBefore(Node<T> p, T item)
- 만들고자 하는 구조
- new 노드 > p 노드 > 다음 노드
- 이 경우 간단하지 않다.
- 이유는 LinkedList 의 노드들은 자신의 다음 노드의 주소값을 가지고 있지 전 노드의 주소값을 가지고 있지 않기 때문
- temp.next = p
- 직전 노드.next = temp
- 직전노드의 주소를 알 수 없기 때문에 직전노드의 next에 temp값을 넣어주기 어렵다.
- 따라서 어떤 노드 뒤에 노드를 삽입하는 것은 간단하지만 반대로 어떤 노드의 앞에 삽입하는 것은 간단하지 않음
- 이유는 LinkedList 의 노드들은 자신의 다음 노드의 주소값을 가지고 있지 전 노드의 주소값을 가지고 있지 않기 때문
- 만들고자 하는 구조
- removeFirst()
- 만들고자 하는 구조
- head > 삭제할 노드 > 다음 노드 인 구조가
head > 다음 노드 가 되도록 연결리스트의 첫번째 노드를 삭제함
- head > 삭제할 노드 > 다음 노드 인 구조가
- 삭제할 노드의 데이터를 리턴해줌(리턴해주지 않아도 됨)
- 순서
- head다음이 null인 경우 즉, 노드가 하나도 없는 경우에는 return(종료)
- head 노드에 다음 노드의 주소를 넣어줌
- 만들고자 하는 구조
public T removeFirst() {
if(head == null)
return null;
T temp = head.data;
head = head.next;
size--;
return temp;
}
- removeAfter(Node<T> before)
- 만들고자 하는 구조
- before 노드 > 삭제할 노드 > 다음 노드인 구조가
before 노드 > 다음 노드 가 되도록 함
- before 노드 > 삭제할 노드 > 다음 노드인 구조가
- 삭제할 노드의 데이터를 리턴, 마찬가지로 자유임
- 순서
- before 의 다음이 null인 경우 return(종료)
- before 노드의 next에 다음 노드의 주소를 넣어줌
- before 노드 > 삭제할 노드 > 다음 노드이므로 before.next.next로 표현
- 만들고자 하는 구조
public T removeAfter(Node<T> before) {
if(before.next == null)
return null;
T temp = before.next.data;
before.next = before.next.next;
return temp;
}
- 출처
- 인프런 java로 배우는 자료구조
- 4-1장: 연결리스트의 개념과 기본연산 3
- https://www.inflearn.com/course/java-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0
- 인프런 java로 배우는 자료구조
'data structure' 카테고리의 다른 글
[Singly Linked List] 검색, 삽입, 삭제 (0) | 2020.03.14 |
---|---|
[Singly Linked List] node 추가하기 (0) | 2020.03.14 |
Array, LinkedList (0) | 2020.03.14 |
Linked List (0) | 2020.03.13 |
stack, queue (0) | 2020.03.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 운영체제
- server side rendering
- 자료구조
- 재귀함수
- 스텍
- 최단경로
- dfs
- 클래스
- client side rendering
- 인접행렬
- javascript
- Stack
- C++
- 배열
- 구조체
- 동적프로그래밍
- 알고리즘
- Java
- 입출력장치
- 퀵정렬
- 인접리스트
- 교착상태
- react
- 소프트웨어
- stackframe
- BFS
- 병행프로세스
- 세마포어
- C
- 이진탐색
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함