示例#1
0
 /// <summary>
 /// Adds item i to the end of the linked list
 /// </summary>
 /// <param name="i"></param>
 public void AddItem(Item i)
 {
     if (first != null)
     {
         //there are 1 or more items already in the linked list
         Node tempNode;
         tempNode = new Node(i);
         last.setNext(tempNode);
         last = tempNode;
     }
     else
     {// there are no items in the linked list
         first = new Node(i);
         last  = first;
     }
 }
        public void add(int data)
        {
            Node node = new Node(data);

            node.setPrevious(tail);

            if (tail != null)
            {
                tail.setNext(node);
            }

            if (head == null)
            {
                head = node;
            }

            tail = node;
            size++;
        }
示例#3
0
 //Insert new node with new data
 public void newNode(int data)
 {
     // If first node is null
     if (head is null)
     {
         head = new Node(data, null);
     }
     // Else add new node to end
     else
     {
         Node current = head;
         // At end if current.next is null
         while (current.getNext() != null)
         {
             current = current.getNext();
         }
         current.setNext(new Node(data, null));
     }
 }
示例#4
0
        public void delete(int index)
        {
            Node currentNode  = head;
            int  currentIndex = 0;

            if (index < 0 || index >= size)
            {
                return;
            }

            size--;

            if (size == 0)
            {
                head = null;
                tail = null;
                return;
            }

            if (index == 0)
            {
                head = head.getNext();
                head.setPrevious(null);
            }

            if (index == size - 1)
            {
                tail = tail.getPrevious();
                tail.setNext(null);
            }

            if (index > 0 && index < size - 1)
            {
                while (currentIndex < index)
                {
                    currentNode = currentNode.getNext();
                    currentIndex++;
                }

                currentNode.getPrevious().setNext(currentNode.getNext());
                currentNode.getNext().setPrevious(currentNode.getPrevious());
            }
        }
示例#5
0
        public void insert(int data, int position, Iterator it)
        {
            Node newNode     = new Node(data);
            Node currentNode = it.getCurrentNode();

            if (position == AFTER)
            {
                newNode.setNext(currentNode.getNext());
                newNode.setPrevious(currentNode);
                currentNode.setNext(newNode);

                if (newNode.getNext() != null)
                {
                    newNode.getNext().setPrevious(currentNode);
                }
                else
                {
                    tail = newNode;
                }
            }
            else if (position == BEFORE)
            {
                newNode.setPrevious(currentNode.getPrevious());
                newNode.setNext(currentNode);
                currentNode.setPrevious(newNode);

                if (newNode.getPrevious() != null)
                {
                    newNode.getPrevious().setNext(newNode);
                }
                else
                {
                    head = newNode;
                }
            }
            else
            {
                System.Console.WriteLine("No conozco el valor de position");
            }

            size++;
        }
        public void insert(int data, int position, Iterator it)
        {
            Node newNode     = new Node(data);
            Node currentNode = it.getCurrentNode();

            size++;

            if (position == AFTER)
            {
                newNode.setNext(currentNode.getNext());

                currentNode.setNext(newNode);

                if (newNode.getNext() != null)
                {
                    newNode.setPrevious(currentNode);
                    newNode.getNext().setPrevious(newNode);
                }
                else
                {
                    newNode.setNext(null);
                }
            }
            else if (position == BEFORE)
            {
                newNode.setPrevious(currentNode.getPrevious());
                newNode.setNext(currentNode);
                currentNode.setPrevious(newNode);

                if (newNode.getPrevious() != null)
                {
                    newNode.getPrevious().setNext(newNode);
                }
                else
                {
                    newNode.setPrevious(null);
                }
            }
        }