Beispiel #1
0
        public void AddAs(int index, int data)
        {
            LinkedListMember newMember = new LinkedListMember(data);

            if (index < 0 || index > _size)
            {
                throw new IndexOutOfRangeException();
            }

            if (_size == 0)
            {
                _first = newMember;
                _first.SetPrev(null);
                _first.SetNext(null);
            }
            else if (index == 0)
            {
                newMember.SetNext(_first);
                _first.SetPrev(newMember);
                _first = newMember;
            }
            else
            {
                LinkedListMember addAfterMember = GetMember(index - 1);

                LinkedListMember next = addAfterMember.GetNext();

                next?.SetPrev(newMember);
                addAfterMember.SetNext(newMember);

                newMember.SetPrev(addAfterMember);
                newMember.SetNext(next);
            }

            _size++;
        }
Beispiel #2
0
        public void Remove(int index)
        {
            if (index < 0 || index >= _size)
            {
                throw new IndexOutOfRangeException();
            }

            LinkedListMember targetMember = GetMember(index);

            LinkedListMember prev = targetMember.GetPrev();
            LinkedListMember next = targetMember.GetNext();

            prev?.SetNext(next);
            next?.SetPrev(prev);

            if (index == 0)
            {
                _first = next;
            }

            _size--;
        }
Beispiel #3
0
        public void Reverse()
        {
            if (_size < 2)
            {
                return;
            }

            LinkedListMember currentMember = _first;
            LinkedListMember newFirst      = null;

            while (currentMember != null)
            {
                LinkedListMember next = currentMember.GetNext();
                currentMember.SetNext(currentMember.GetPrev());
                currentMember.SetPrev(next);

                newFirst      = currentMember;
                currentMember = next;
            }

            _first = newFirst;
        }