특정 노드의 뒤에 넣는 기능과
특정 노드의 앞에 넣는 기능을 구현해보았다.
특정 노드의 뒤에 넣는 기능은 특정 노드가
가리키는 주소를 새로운 노드의 참조변수에 넣고
특정노드의 참조변수에 새로운 노드의 주소를 넣어주면
된다.
하지만 특정 노드의 앞에 넣는 기능은 그리 간단한 것이
아니다. 왜냐하면 각 노드들은 다음 주소를 가리키는 참조변수만
존재하고 이전 노드의 주소는 가지고 있지 않기에
굳이 기능을 구현하려면 첫번째 노드부터 시작해서 특정 노드 전까지의
노드를 찾는 방법이 있을 수 있다.
또한
특정 노드의 첫번째 노드를 삭제하는 기능과
특정 노드를 삭제하는 기능을 구현해보았다.
특정 노드의 첫번째 노드를 삭제하는 기능은
헤드가 널값이 아닐때 헤드에 저장된 값을
특정 노드의 다음노드를 가리키게 하면된다.
특정노드를 삭제하는 기능은
특정 노드의 이전 노드가 필요하다.
실제로는 그 앞노드의 참조변수를 건드려야하기 때문이다.
이전노드의 참조변수에 다음다음노드를 가리키게하면 된다.
그 이전에 그다음 노드가 존재해야만 가능하다.
package section6;
public class MySingleLinkedList<T> {
public Node<T> head;
public int size = 0;
public MySingleLinkedList() {
head = null;
size = 0;
}
public void addFirst(T item) {
Node<T> newNode = new Node<T>(item);
newNode.next = head;
head = newNode;
size++;
}
public void addAfter(Node<T> before, T item) {
Node<T> temp = new Node<T>(item);
temp.next = before.next;
before.next = temp;
size++;
}
public T removeFirst() { //delete
if(head==null) {
return null;
}
else {
T temp = head.data;
head = head.next;
size--;
return temp;
}
}
public T removeAfter(Node<T> before) {
if(before.next==null) {
return null;
}
else {
T temp = before.next.data;
before.next = before.next.next;
return temp;
}
}
public T get(int index) { //get
return null;
}
public int indexOf(T item) { //search
return -1;
}
public static void main(String[] args) {
}
}'알고리즘 with 자바 > 자료구조' 카테고리의 다른 글
| 연결리스트의 개념과 기본연산 5 (0) | 2021.07.19 |
|---|---|
| 연결리스트의 개념과 기본연산 4 (0) | 2021.07.15 |
| 연결리스트의 개념과 기본연산 2 (0) | 2021.07.14 |
| 연결리스트의 개념과 기본연산 1 (0) | 2021.07.14 |
| Generic 프로그래밍과 Generics 3 (0) | 2021.07.13 |