휴지통/알고리즘 & 자료구조
Double Linked List
by 신재권
2021. 7. 14.
package review1;
public class DoubleLinkedList<T> {
public Node1<T> head = null;
public Node1<T> tail = null;
//데이터 추가
public void addNode(T data){
if(this.head == null){
this.head = new Node1<T> (data);
this.tail = this.head;
}else{
Node1<T> node = this.head;
while(node.next != null){
node = node.next;
}
node.next = new Node1<T>(data);
node.next.prev = node;
this.tail = node.next;
}
}
public void printAll(){
if(head != null){
Node1<T> node = this.head;
System.out.print("["+node.data+", ");
while(node.next != null){
node = node.next;
System.out.print(node.data+", ");
}
System.out.println("]");
}
}
public boolean deleteNode(T data){
if(this.head == null){
return false;
}else{
Node1<T> node = this.head;
if(node.data == data){
this.head = this.head.next;
this.head.prev = null;
return true;
}else{
while(node.next != null){
if(node.next.data == data){
node.next = node.next.next;
node.next.prev = node;
return true;
}
node.next = node;
}
return false;
}
}
}
// DoubleLinkedList는 양쪽으로 접근이 가능하다.
public static void main(String[] args) {
DoubleLinkedList<Integer> data_list = new DoubleLinkedList<Integer>();
data_list.addNode(1);
data_list.addNode(2);
data_list.addNode(3);
data_list.printAll();
data_list.deleteNode(2);
data_list.printAll();
}
}
class Node1<T>{ //노드 클래스 선언
T data; //데이터
Node1<T> prev = null; //이전 요소를 가리킨다.
Node1<T> next = null; //다음 요소를 가리킨다.
public Node1(T data){
this.data= data;
}
}