Esempio n. 1
0
    public IEnumerator <T> GetEnumerator()
    {
        ListItemCustom <T> currentNode = this.firstElement;

        while (currentNode != null)
        {
            yield return(currentNode.Value);

            currentNode = currentNode.NextItem;
        }
    }
Esempio n. 2
0
 public T Dequeue()
 {
     if (this.Count == 0)
     {
         throw new InvalidOperationException("The queue is empty.");
     }
     this.firstElement = this.firstElement.NextItem;
     if (this.Count == 1)
     {
         this.lastElement = null;
     }
     this.Count--;
     return(this.firstElement.Value);
 }
Esempio n. 3
0
    private ListItemCustom <T> GetPrev(ListItemCustom <T> item)
    {
        ListItemCustom <T> currentNode = this.FirstItem;

        while (currentNode.NextItem != null)
        {
            if (currentNode.NextItem == item)
            {
                return(currentNode);
            }
            currentNode = currentNode.NextItem;
        }
        throw new NullReferenceException();
    }
Esempio n. 4
0
 public void AddLast(ListItemCustom <T> item)
 {
     if (this.Count == 0)
     {
         this.FirstItem = item;
         this.LastItem  = item;
     }
     else
     {
         this.LastItem.NextItem = item;
         this.LastItem          = item;
     }
     this.Count++;
 }
Esempio n. 5
0
    public void Enqueue(T item)
    {
        ListItemCustom <T> newNode = new ListItemCustom <T>(item);

        if (this.Count == 0)
        {
            this.firstElement = newNode;
        }
        else
        {
            this.lastElement.NextItem = newNode;
        }
        this.lastElement = newNode;
        this.Count++;
    }
Esempio n. 6
0
 public void AddBefore(ListItemCustom <T> node, ListItemCustom <T> newItem)
 {
     if (node == null || newItem == null)
     {
         throw new ArgumentNullException();
     }
     if (node == this.FirstItem)
     {
         this.AddFirst(newItem);
         return;
     }
     GetPrev(node).NextItem = newItem;
     newItem.NextItem       = node;
     this.Count++;
 }
Esempio n. 7
0
 public void AddAfter(ListItemCustom <T> node, ListItemCustom <T> newItem)
 {
     if (node == null || newItem == null)
     {
         throw new ArgumentNullException();
     }
     if (node.NextItem == null)
     {
         this.AddLast(newItem);
         return;
     }
     newItem.NextItem = node.NextItem;
     node.NextItem    = newItem;
     this.Count++;
 }
Esempio n. 8
0
 public void Clear()
 {
     this.firstElement = null;
     this.lastElement  = null;
     this.Count        = 0;
 }
Esempio n. 9
0
    public void AddBefore(ListItemCustom <T> node, T newItem)
    {
        ListItemCustom <T> newNode = new ListItemCustom <T>(newItem);

        this.AddBefore(node, newNode);
    }
Esempio n. 10
0
    public void AddLast(T item)
    {
        ListItemCustom <T> newItem = new ListItemCustom <T>(item);

        this.AddLast(newItem);
    }