이중 연결 리스트에서 데이터를 삭제하는 방법

이중 연결 리스트에서 노드 삭제는 3가지를 생각해야 합니다.

  • 헤드 노드 삭제
  • 중간 노드 삭제
  • 마지막 노드 삭제
public class DoublyLinkedList {
	static Node head;

	public static void main(String[] args) {
		push(1);
		push(2);
		push(3);
		deleteNode(head.next);
		printList(head);
	}
	
	static void push(int data) {
		Node newNode = new Node(data);
		
		newNode.next = head;
		
		if(head != null) head.prev = newNode;
		
		head = newNode;
	}
	
	
	
	static void deleteNode(Node del) {
		if(head == null || del == null) return;
		
		if(head == del) {
			head = del.next;
		}
		
		if(del.next != null) {
			del.next.prev = del.prev;
		}
		
		if(del.prev != null) {
			del.prev.next = del.next;
		}
	}
	
	static class Node {
		int data;
		Node prev;
		Node next;
		
		public Node(int data) {
			this.data = data;
			this.prev = null;
			this.next = null;
		}
	}
	
	static void printList(Node n) {
		while(n != null) {
			System.out.println(n.data);
			n = n.next;
		}
	}	

}