goal
LinkedList의 구현 내용을 이해한다.
- 데이터 삽입구현
- 데이터 삭제구현
- 데이터 불러오기
package structure;
public class SinglyLinkedList {
public static void main(String[] args) {
LinkedList linked = new LinkedList();
linked.unshipt("데이터1");
linked.unshipt("데이터2");
linked.unshipt("데이터3");
linked.unshipt("데이터4");
linked.push("push데이터1");
linked.insert(2, "--insert 데이터1--");
linked.getLinkedList();
}
}
// Node 정보를 담는 클래스
class Node {
public Node next = null;
public String data;
public Node(String data){
this.data = data;
}
}
/*
TODO
1. 데이터 삽입 ( 처음 / 중간 / 마지막 )
2. 데이터 삭제 ( 처음 - 중간 / 마지막 ) -> 미구현
3. 링크드 리스트 데이터 읽어오기
*/
class LinkedList {
private Node head = null;
private Node tail = null;
private int size = 0;
// 데이터가 삽입되지 않은 경우
private void headNull(Node newNode) {
head = newNode;
tail = newNode;
}
// 데이터가 첫 인덱스에 삽입된 경우
public void unshipt(String data) {
Node newNode = new Node(data);
if(head == null) {
this.headNull(newNode);
} else {
newNode.next = head;
head = newNode;
}
size += 1;
}
// 데이터가 사용자 지정 인덱스에 삽입된 경우
public void insert(int index, String data) {
/*
head가 null
1. 이면서 index가 0인 경우 <새로운 노드 삽입>
2. 이면서 index가 0이 아닌 경우 <종료>
*/
if(head == null){
if(index == 0) {
this.headNull(new Node(data));
size += 1;
}
return;
}
Node prevNode = null;
Node curNode = head;
for(int i=0; i < index; i ++){
prevNode = curNode;
curNode = curNode.next;
}
Node newNode = new Node(data);
if (prevNode == null) {
newNode.next = head;
head = newNode;
size += 1;
} else if (curNode == null) {
curNode = newNode;
size += 1;
} else {
prevNode.next = newNode;
newNode.next = curNode;
size += 1;
}
}
// 데이터가 마지막 인덱스에 삽입된 경우
public void push(String data) {
Node newNode = new Node(data);
if(head == null) {
this.headNull(newNode);
} else {
tail.next = newNode;
tail = newNode;
}
size += 1;
}
public void getLinkedList() {
Node node = head;
System.out.println("size : " + this.size);
for(int i = 0; i < size; i++){
System.out.print(node.data + " ");
node = node.next;
}
}
}
'Algorithm > java 구현' 카테고리의 다른 글
자료구조 (java) :) 삽입정렬... 입력받은 값을 버블정렬로 출력하기 (0) | 2022.03.28 |
---|---|
자료구조 (java) :) 버블정렬... 입력받은 값을 버블정렬로 출력하기 (0) | 2022.03.28 |
자료구조 (java) :) 선택정렬.. 입력받은 값을 선택정렬로 정리하기 (0) | 2022.03.28 |
algorithm(java) :) 달팽이 알고리즘 배열로 풀어보기 (2차원 배열풀이) (0) | 2022.03.25 |