コード例 #1
0
ファイル: LinkedList.cs プロジェクト: devkdb/Algorithm
        public MyLinkedList <int> _data3 = new MyLinkedList <int>(); // 연결 리스트
        public void Initialize()
        {
            _data3.AddLast(101);
            _data3.AddLast(102);
            MyLinkedListNode <int> node = _data3.AddLast(103);

            _data3.AddLast(104);
            _data3.AddLast(105);
            _data3.AddLast(106);
            _data3.AddLast(107);

            _data3.Remove(node);

            // _data3[2] 안됨. <-- 인덱서를 지원하지 않는다.
            // 데이터 100만 개. 50만번째 인덱스 접근하고 싶다. 50만번 돈다.
        }
コード例 #2
0
ファイル: LinkedList.cs プロジェクト: devkdb/Algorithm
        // O(1)  상수시간. 데이터가 많더라도 딱히.. 오래걸리거나 하지 않음.
        public MyLinkedListNode <T> AddLast(T data)
        {
            MyLinkedListNode <T> newRoom = new MyLinkedListNode <T>();

            newRoom.Data = data;

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

            // 101, 102, 103(기존Tail), 104(newRoom)
            if (Tail != null)
            {
                Tail.Next    = newRoom;
                newRoom.Prev = Tail;
            }

            Tail = newRoom;
            Count++;
            return(newRoom);
        }
コード例 #3
0
ファイル: LinkedList.cs プロジェクト: devkdb/Algorithm
        // 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--;
        }
コード例 #4
0
        // O(1)
        public MyLinkedListNode <T> AddLast(T data)
        {
            MyLinkedListNode <T> newRoom = new MyLinkedListNode <T>();

            newRoom.Data = data;

            // 만약에 아직 방에 없었다면, 새로 추가한 첫번째 방이 곧 Head이다.
            if (Head == null)
            {
                Head = newRoom;
            }

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

            // [새로 추가된 방]을 [마지막 방]으로 인정한다.
            Tail = newRoom;
            Count++;
            return(newRoom);
        }