Exemplo n.º 1
0
    public ListElm <T> ElementAt(int index)
    {
        ListElm <T> currElm  = Head;
        int         position = 0;

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

        else
        {
            while (currElm != null)
            {
                if (position == index)
                {
                    return(currElm);
                }

                currElm = currElm.NxtElm;
                position++;
            }
        }
        return(null);
    }
Exemplo n.º 2
0
    public void Remove(T value)
    {
        ListElm <T> currElm = Head;

        while (currElm != null)
        {
            if (currElm.Value.CompareTo(value) == 0)
            {
                if (currElm.PrvElm != null)
                {
                    Console.WriteLine("set a new neibourgh(next element of the current) for the previous element"
                                      + " of the current element");
                    currElm.PrvElm.NxtElm = currElm.NxtElm;
                }

                else
                {
                    Head = currElm.NxtElm;
                }

                if (currElm.NxtElm != null)
                {
                    currElm.NxtElm.PrvElm = currElm.PrvElm;
                    Console.WriteLine("set a new neibourgh(previous element of the current) for the next element"
                                      + " of the current element");
                }

                currElm = null;
                Count--;
                break;
            }

            currElm = currElm.NxtElm;
        }
    }
Exemplo n.º 3
0
    public T[] ToArray()
    {
        T[]         arr     = new T[Count];
        ListElm <T> current = Head;

        for (int i = 0; i < Count; i++)
        {
            arr[i]  = current.Value;
            current = current.NxtElm;
        }

        return(arr);
    }
Exemplo n.º 4
0
    public void InsertAt(T insertValue, int index)
    {
        if (index > Count || index < 0)
        {
            throw new IndexOutOfRangeException();
        }

        else if (index == Count)
        {
            this.AddLast(insertValue);
        }

        else
        {
            int         position  = 0;
            ListElm <T> injectElm = new ListElm <T>(insertValue);
            ListElm <T> currElm   = Head;

            while (currElm != null)
            {
                if (position == index)
                {
                    injectElm.PrvElm = currElm.PrvElm;
                    injectElm.NxtElm = currElm;

                    if (currElm.PrvElm != null)
                    {
                        currElm.PrvElm.NxtElm = injectElm;
                    }

                    else
                    {
                        Head = injectElm;
                    }

                    currElm.PrvElm = injectElm;
                    Count++;
                    break;
                }

                else
                {
                    currElm = currElm.NxtElm;
                    position++;
                }
            }
        }
    }
Exemplo n.º 5
0
    public ListElm <T> Find(T value)
    {
        ListElm <T> current = Head;

        while (current != null)
        {
            if (current.Value.CompareTo(value) == 0)
            {
                return(current);
            }

            current = current.NxtElm;
        }

        return(null);
    }
Exemplo n.º 6
0
    public void  AddLast(T value)
    {
        if (Tail == null)
        {
            Head = new ListElm <T>(value);
            Tail = Head;
        }

        else
        {
            Tail.NxtElm        = new ListElm <T>(value);
            Tail.NxtElm.PrvElm = Tail;
            Tail = Tail.NxtElm;
        }

        Count++;
    }
Exemplo n.º 7
0
    public void AddFirst(T value)
    {
        if (Head == null)
        {
            Tail = new ListElm <T>(value);
            Head = Tail;
        }

        else
        {
            Head.PrvElm        = new ListElm <T>(value);
            Head.PrvElm.NxtElm = Head;
            Head = Head.PrvElm;
        }

        Count++;
    }