public void Remove(DoublyLinkedListNode <T> removeNode) { if (head == null || removeNode == null) { return; } // 삭제할 노드가 헤드 노드이고 노드가 1개이면 if (removeNode == head && head == head.Next) { head = null; } else { removeNode.Prev.Next = removeNode.Next; removeNode.Next.Prev = removeNode.Prev; } removeNode = null; }
public void Add(DoublyLinkedListNode <T> newNode) { if (head == null) { head = newNode; head.Next = head; head.Prev = head; } else { // head의 끝은 항상 tail, 새 노드는 항상 맨 끝에 생성되므로 tail var tail = head.Prev; head.Prev = newNode; tail.Next = newNode; newNode.Prev = tail; newNode.Next = head; } }
public void Add(DoublyLinkedListNode <T> newNode) { if (head == null) { head = newNode; } else { var current = head; while (current != null && current.Next != null) { current = current.Next; } // 현재 노드의 Next를 새 노드로 지정 current.Next = newNode; // 새 노드의 Prev를 현재 노드로 지정 newNode.Prev = current; // 새 노드의 다음은 null로 지정해야한다. newNode.Next = null; } }
public CircularLinkedList(T data, DoublyLinkedListNode <T> next, DoublyLinkedListNode <T> prev) { this.Data = data; this.Next = next; this.Prev = prev; }
public DoublyLinkedListNode(T data, DoublyLinkedListNode <T> prev, DoublyLinkedListNode <T> next) { this.Data = data; this.Prev = prev; this.Next = next; }