단일 연결 리스트(Singly Linked List) 3가지 추가 방법

1. 앞에 노드를 추가하는 방법

  • 첫 번째 노드를 새로운 노드에 연결합니다.
  • 첫 번째 노드에서 헤드를 제거합니다.
  • 새 노드를 헤드로 만듭니다.
public class SinglyLinkedList {
	static Node head;
	
	static class Node {
		int data;
		Node next;
		
		Node(int d) {
			this.data = d;
			this.next = null;
		}		
	}
	
	static void push(int newData) {
		Node newNode = new Node(newData);
		newNode.next = head;
		head = newNode;
	}
	
	public static void main(String[] args) {
		push(3);
		push(2);
		push(1);
		
		printList(head);
	}
	
	static void printList(Node n) {
		while(n != null) {
			System.out.println(n.data);
			n = n.next;
		}
	}	
}

2. 여러 노드에서 특별한 노드 뒤에 추가하는 방법

  • 특정 노드가 존재하는지 확인해야합니다.
  • 존재할 경우 새 노드를 만들어서 특정 노드의 다음 포인터를 새 노드의 포인터로 옮깁니다.
  • 특정 노드의 다음 포인터를 새 노드로 만듭니다.
public class SinglyLinkedList {
	static Node head;
	
	static class Node {
		int data;
		Node next;
		
		Node(int d) {
			this.data = d;
			this.next = null;
		}		
	}
	
	static void push(int newData) {
		Node newNode = new Node(newData);
		newNode.next = head;
		head = newNode;
	}
	
	static void insertAfter(Node prevNode, int newData) {
		if(prevNode == null) {
			System.out.println("null");
			return;
		}
		
		Node newNode = new Node(newData);
		newNode.next = prevNode.next;
		prevNode.next = newNode;
	}
	
	public static void main(String[] args) {
		push(3);
		push(2);
		push(1);
		insertAfter(head.next, 4);
		printList(head);
	}
	
	static void printList(Node n) {
		while(n != null) {
			System.out.println(n.data);
			n = n.next;
		}
	}	
}

 

3. 연결 리스트 끝에 노드를 추가하는 방법

  • 연결 리스트 마지막 노드로 이동합니다.
  • 마지막 노드의 포인터를 null에서 새 노드로 변경합니다.
  • 새 노드의 포인터를 null로 만듭니다.
public class SinglyLinkedList {
	static Node head;
	
	static class Node {
		int data;
		Node next;
		
		Node(int d) {
			this.data = d;
			this.next = null;
		}		
	}
	
	static void append(int newData) {
		Node newNode = new Node(newData);
		
		if(head == null) {
			head = newNode;
			return;
		}
		
		Node last = head;
		while(last.next != null) last = last.next;
		
		last.next = newNode;
		return;
	}
	
	public static void main(String[] args) {
		append(1);
		append(2);
		append(3);
		printList(head);
	}
	
	static void printList(Node n) {
		while(n != null) {
			System.out.println(n.data);
			n = n.next;
		}
	}	
}