Example #1
0
        // O(1)
        public void Remove(MyLinkedListNode <T> room)
        {
            // 방리스트에서 첫번째 방을 제거해야하면, 두번째 방을 첫째 방으로 바꿔준다.
            if (Head == room)
            {
                Head = Head.Next;
            }
            // 기존의 마지막 방의 이전 방을 마지막 방으로 인정한다.
            if (Tail == room)
            {
                Tail = Tail.Prev;
            }
            if (room.Prev != null)
            {
                room.Prev.Next = room.Next;
            }
            if (room.Next != null)
            {
                room.Next.Prev = room.Prev;
            }

            Count--;
        }
Example #2
0
        // O(1)
        public MyLinkedListNode <T> AddLast(T data)
        {
            MyLinkedListNode <T> newRoom = new MyLinkedListNode <T>();

            newRoom.Data = data;

            // 방 리스트에 방이 없었다면

            if (Head == null)
            {
                Head = newRoom;
            }

            // 기존의 마지막 방에 새로 추가된 방을 연결해준다.
            if (Tail != null)
            {
                Tail.Next    = newRoom;
                newRoom.Prev = Tail;
            }

            Tail = newRoom;
            Count++;
            return(newRoom);
        }