Computer science

Classified in Computers

Written at on English with a size of 5.79 KB.

 
public class TrainList<X>
{
    Node<X> first;
    Node<X> last;
    public void add(X value)
    {
        addLast(value)
    }
    public void addFirst(X value)
    {
        Node<X> x = new Node<X>(value);
        if(first == null)
        {
            last = x;
        }
        else 
        {
            x.Next = first;
        }
        first = x;
    }
    public void addLast(X value)
    {
       Node<X> x = new Node<X>(value);
       if(first == null)
       {
           first = x;
       }
        else
       {
            last.Next = x;
       }
       last = x;
    }
    public int size()
    {
        int count = 0;
        Node<X>x = first;
        while (x != null)
        {
            count++;
            x = x.Next;
        }
        return count;      
    }
    public X get(int index)
    {
        if(index < 0 || index >= size())
        {
            throw new Pie();
        }
        int count = 0;
        Node<X> x = first;
        while (x != null)
        {
            if (count == index)
            {
                return x.Value;
            }
            count++;
            x = x.Next;
        }
        return null;
    }
    public void set(int index, X value)
    {
        if(index < 0 || index >= size())
        {
            throw new Pie();
        }
        int count = 0;
        Node<X> x = first;
        while(x != null)
        {  
        if(count == index)
        {
            x.Value = value;
        }
        count++;
        x = x.Next;
    } 
    }

    public void clear()
    {
        first = null;
    }

    public void insert(int index, X value)
    {   
        if(index < 0 || index >= size())
        {
            throw new Pie();
        }
        if (index == 0)
        {
            addFirst(value);
        }
        else 
        {
        int count = 0;
        Node<X> x = first;
        while(count < index - 1)
        {
            count ++;
            x = x.Next;
        }
        Node<X> a = new Node<X>(value);
        a.Next = x.Next;
        x.Next = a;
    }
    }

    public void remove(int index)
    {       
       if (index < 0 || index >= size())
       {
           throw new Pie();
       }
       if(index == 0)
       {
        first = first.Next;
       }
       else 
       {
       Node<X> x = first;
       int count = 0;
       while (count < index - 1)
       {
           count++;
           x = x.Next;
       }
       x.Next = x.Next.Next;
       if(x.Next == null)
       {
            last = x;
       }
       }
}
    public String toString()
    {
        String str = "[";
        Node<X> x = first;
        if(first == null) {
        return  "[]";
    }
        while(x.Next != null)
        {
          str += x.Value + ", ";
          x = x.Next;
        }
        return str += x.Value + "]";
        }

    public int indexOf(X target)
    {
        Node<X> x = first;
        int index = 0;
        while(x != null)
        {   
            if(x.Value.Equals(target))
            {
                return index;
            }
            index++;
            x = x.Next;
        }
        return -1;
    }
}

Entradas relacionadas: