연결리스트 파워포인트 파일 다운로드
LinkedList.java
public class LinkedList {
private static class Node {
private Object data;
private Node next;
private Node(Object data) {
this.data = data;
next = null;
}
public String toString(){
return String.valueOf(this.data);
}
}
private Node head = new Node(null);
private Node tail = new Node(null);
private int size = 0;
public static void main(String[] args) {
LinkedList numbers = new LinkedList();
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(40);
System.out.println(numbers);
System.out.println(numbers.get(0));
System.out.println(numbers.get(1));
System.out.println(numbers.get(4));
System.out.println(numbers.delete(1));
System.out.println(numbers);
System.out.println(numbers.delete(0));
System.out.println(numbers);
try {
System.out.println(numbers.delete(2));
}catch(RuntimeException e) {
System.out.println(e.getMessage());
}
System.out.println(numbers.delete(1));
System.out.println(numbers);
System.out.println(numbers.insert(60, 0));
System.out.println(numbers);
System.out.println(numbers.insert(70, 1));
System.out.println(numbers);
try {
System.out.println(numbers.insert(70, 5));
}catch(RuntimeException e) {
System.out.println(e.getMessage());
}
System.out.println(numbers);
}
public int size() {
return size;
}
public void add(Object input) {
Node newNode = new Node(input);
if(head.next == null) {
head.next = newNode;
tail.next = newNode;
}else {
tail.next.next = newNode;
tail.next = newNode;
}
size++;
}
public String toString() {
Node node = head.next;
if(node == null) {
return "[]";
}
String str = size + " [";
while(node != null) {
str += node.toString();
if(node != tail.next) {
str += ", ";
}
node = node.next;
}
str += "]";
return str;
}
public Node get(int index) {
Node node = head.next;
for(int i=0; node!=null; i++) {
if(index == i) {
break;
}else {
node = node.next;
}
}
return node;
}
public Node delete(int position) {
Node curNode = get(position);
if(curNode == null) {
throw new RuntimeException("잘 못된 삭제 위치입니다.");
}else {
if(position==0) {
head.next = curNode.next;
}else {
Node prevNode = get(position-1);
prevNode.next = curNode.next;
if(tail.next == curNode) {
tail.next = prevNode;
}
}
size--;
}
return curNode;
}
public Node insert(Object data, int position) {
Node newNode = new Node(data);
Node curNode = get(position);
if(curNode == null) {
throw new RuntimeException("잘 못된 삽입 위치입니다.");
}else {
if(position==0) {
newNode.next = head.next;
head.next = newNode;
}else {
Node prevNode = get(position-1);
newNode.next = prevNode.next;
prevNode.next = newNode;
}
size++;
}
return newNode;
}
}
|