// Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown("escape"))
        {
            SceneManager.LoadScene("Menu");
        }

        if (refreshNeeded)
        {
            LiList list = listHolder.GetList();

            float size = 0;
            if (list != null)
            {
                size = list.getSize();
            }

            Vector3 newPosition = new Vector3(center.x - (size - 1f) * unitSize / 2f, center.y, center.z);

            listHolder.MoveListTo(newPosition);
            listHolder.Rearrange();

            string listString = listToString(list);


            outputText.text = listString;

            ///////////////////////////////////////////////
            refreshNeeded = false;
        }
    }
Exemplo n.º 2
0
    public LiList DeleteAt(int index)
    {
        LiList node = getNodeAt(index);

        LiList head = findHead();

        if (node != null)
        {
            LiList prev = node.previous;
            LiList nx   = node.next;

            if (prev != null)
            {
                prev.next = nx;
            }
            else
            { // if head is to be deleted //
                head = nx;
            }

            if (nx != null)
            {
                nx.previous = prev;
            }
        }

        return(head);
    }
Exemplo n.º 3
0
    public LiList AddAt(int index, GameObject go)
    {
        if (index == 0)
        {
            return(AddFirst(go));
        }

        LiList prevNode = getNodeAt(index - 1);

        if (prevNode == null)
        {
            prevNode = findTail();
        }

        LiList nextNode = prevNode.next;

        LiList newEl = new LiList(go, prevNode, nextNode);

        prevNode.next = newEl;

        if (nextNode != null)
        {
            nextNode.previous = newEl;
        }

        return(newEl.findHead());
    }
Exemplo n.º 4
0
        public void InstantiateListAtNull()
        {
            ///Test that link list is instantiated with null value
            LiList testList = new LiList();

            Assert.Null(testList.Head);
        }
    public LiList CloneList()
    {
        if (listHead == null)
        {
            return(null);
        }

        LiList current = listHead;
        LiList newList = null;

        while (current != null)
        {
            GameObject o = current.getData();

            GameObject copy = Object.Instantiate(o);

            LiList newNode = new LiList(copy, null, null);

            if (newList != null)
            {
                newList = newList.AppendList(newNode);
            }
            else
            {
                newList = newNode;
            }

            current = current.getNext();
        }

        return(newList);
    } // End of CloneList() //
Exemplo n.º 6
0
        /// <summary>
        /// Find the kth node from the end of a link list and return the value
        /// </summary>
        /// <param name="k">node position to return</param>
        /// <returns>kth node value from end</returns>
        public static int FindKthFromEnd(LiList myList, int k)
        {
            myList.Current = myList.Head;
            int counter = 1;

            if (myList.Current == null)
            {
                throw new Exception();
            }
            while (myList.Current.Next != null) /// interrate through linked list to get count, start at one in order to equate for positioning
            {
                myList.Current = myList.Current.Next;
                counter++;
            }
            if (k > (counter - 1))
            {
                throw new Exception();
            }
            counter        = counter - k; //set new counter eqaul to counter less k to find positioning
            myList.Current = myList.Head;
            while (counter > 1)           /// interated through until counter less than one to find variable
            {
                myList.Current = myList.Current.Next;
                counter--; /// deduct from counter each iteration
            }
            return(myList.Current.Value);
        }
Exemplo n.º 7
0
    public LiList DeleteFirst()
    {
        LiList head = findHead();

        head          = head.next;
        head.previous = null;
        return(head);
    }
Exemplo n.º 8
0
        public void TestIfInsertsValue()
        {
            ///Test if insert function will insert accordingly
            int    testNum  = 13;
            LiList testList = new LiList();

            testList.Insert(testNum);
            Assert.Equal(13, testList.Head.Value);
        }
Exemplo n.º 9
0
        public void TestIfZeroIncluded()
        {
            ///Test if node does not exist, will return false
            int    testNum  = 0;
            LiList testList = new LiList();

            testList.Insert(testNum);
            Assert.True(testList.Includes(testNum));
        }
Exemplo n.º 10
0
    public LiList DeleteLast()
    {
        LiList head = findHead();
        LiList tail = findTail();

        tail      = tail.previous;
        tail.next = null;

        return(head);
    }
Exemplo n.º 11
0
    public LiList AddFirst(GameObject go)
    {
        LiList head = this.findHead();

        LiList newHead = new LiList(go, null, head);

        head.previous = newHead;

        return(newHead);
    }
Exemplo n.º 12
0
 public void AddAt(int index, GameObject go)
 {
     if (listHead == null)
     {
         AddLast(go);
     }
     else
     {
         listHead = listHead.AddAt(index, go);
     }
 }
Exemplo n.º 13
0
    //////////////////////// intermediate list methods ////////////////////////

    public void AddLast(GameObject o)
    {
        if (listHead == null)
        {
            listHead = new LiList(o, null, null);
        }
        else
        {
            listHead = listHead.AddLast(o);
        }
    }
Exemplo n.º 14
0
        public void TestIfNotIncluded()
        {
            ///Test if node does not exist, will return false
            int    testNum  = 7;
            LiList testList = new LiList();

            testList.Insert(testNum);
            int falseValue = 13;

            Assert.False(testList.Includes(falseValue));
        }
Exemplo n.º 15
0
        public void TestIfInsertsValueAtHeadChanges()
        {
            ///Test if insert function will change head value
            int    testNum1 = 33;
            int    testNum2 = 77;
            LiList testList = new LiList();

            testList.Insert(testNum1);
            testList.Insert(testNum2);
            Assert.NotEqual(testNum1, testList.Head.Value);
        }
Exemplo n.º 16
0
        public void TestAppendToNullList()
        {
            ///test appends to null list
            int    testNum  = 33;
            LiList testList = new LiList();

            testList.Append(testNum);
            int expectedValue = 33;

            Assert.Equal(expectedValue, testList.Head.Value);
        }
Exemplo n.º 17
0
        /// <summary>
        /// Instantiates a New Linked List  and inserts new nodes into list
        /// </summary>
        /// <param name="num">value of node</param>
        static void NewList(int num, int num1, int num2)
        {
            LiList myList = new LiList();

            myList.Insert(num);
            myList.Insert(num * 2);
            myList.Insert(num * 3);
            myList.Insert(num * 4);
            myList.Print();
            myList.InsertAfter(12, 99);
            myList.Print();
        }
Exemplo n.º 18
0
    public GameObject DeleteAt(int index)
    {
        if (listHead == null)
        {
            return(null);
        }

        GameObject o = GetObjectAt(index);

        listHead = listHead.DeleteAt(index);

        return(o);
    }
Exemplo n.º 19
0
    public LiList findTail()
    {
        LiList el  = this;
        LiList nxt = el.next;

        while (nxt != null)
        {
            el  = nxt;
            nxt = el.next;
        }

        return(el);
    }
Exemplo n.º 20
0
    public int getSize()
    {
        LiList cur = findHead();
        int    len = 0;

        while (cur != null)
        {
            len++;
            cur = cur.next;
        }

        return(len);
    }
Exemplo n.º 21
0
    public LiList AddLast(GameObject go)
    {
        LiList tail = this.findTail();


        LiList head = this.findHead();

        LiList newTail = new LiList(go, tail, null);

        tail.next = newTail;

        return(head);
    }
Exemplo n.º 22
0
        static void TestKValue(int k, int num)
        {
            LiList myList = new LiList();

            myList.Insert(num);
            myList.Insert(num * 2);
            myList.Insert(num * 3);
            myList.Insert(num * 4);
            myList.Print();
            Console.WriteLine($"k value: {k}");
            Console.WriteLine($"K value from end: {myList.FindKthFromEnd(k)}");
            Console.ReadLine();
        }
Exemplo n.º 23
0
    public void SetList(LiList l)
    {
        if (l != null)
        {
            this.listHead = l.findHead();

            targetPosition = this.listHead.getData().transform.position;
        }
        else
        {
            this.listHead  = null;
            targetPosition = Vector3.zero;
        }
    }
Exemplo n.º 24
0
    public LiList findHead()
    {
        LiList el   = this;
        LiList prev = el.previous;


        while (prev != null)
        {
            el   = prev;
            prev = el.previous;
        }

        return(el);
    }
Exemplo n.º 25
0
        public void TestOddLengthMerge()
        {
            /// Test that merge will work on uneven list lengths
            LiList listOne = new LiList();
            LiList listTwo = new LiList();

            listOne.Insert(1);
            listOne.InsertAfter(1, 2);
            listTwo.Insert(4);
            Program.Merge(listOne, listTwo);
            int expectedValue = 2;

            Assert.Equal(expectedValue, (listOne.Head.Next.Value));
        }
Exemplo n.º 26
0
    // Use this for initialization
    void Start()
    {
        screenText = GameObject.Find("text1").GetComponent <Text>();

        Fns1Obj.transform.position = new Vector3(center.x - unitSize, center.y, center.z);
        FnObj.transform.position   = new Vector3(center.x + unitSize, center.y, center.z);

        LiList Fns1List = new LiList(Fns1Obj, null, null);
        LiList FnList   = new LiList(FnObj, null, null);

        Fns1Holder       = new ListHolder(Fns1List, unitSize);
        FnHolder         = new ListHolder(FnList, unitSize);
        FtemporaryHolder = new ListHolder(null, unitSize);
    }
Exemplo n.º 27
0
        public void TestAppendToEnd()
        {
            ///test appends method at to end node head
            int    testNum1 = 7;
            int    testNum2 = 17;
            int    testNum3 = 77;
            LiList testList = new LiList();

            testList.Insert(testNum1);
            testList.Insert(testNum2);
            testList.Append(testNum3);
            int expectedValue = 77;

            Assert.Equal(expectedValue, testList.Head.Next.Next.Value);
        }
Exemplo n.º 28
0
        public void TestInsertOnHead()
        {
            ///Test insert before the head returns correct value
            int    testNum1 = 5;
            int    testNum2 = 10;
            int    testNum3 = 33;
            LiList testList = new LiList();

            testList.Insert(testNum1);
            testList.Includes(testNum2);
            testList.InsertBefore(testNum1, testNum3);
            int expectedValue = 33;

            Assert.Equal(expectedValue, (testList.Head.Value));
        }
Exemplo n.º 29
0
        public void TestAppendDoesNotChangeHead()
        {
            ///test append does not insert the new appended node at the head
            int    testNum1 = 3;
            int    testNum2 = 13;
            int    testNum3 = 23;
            LiList testList = new LiList();

            testList.Insert(testNum1);
            testList.Insert(testNum2);
            testList.Append(testNum3);
            int expectedNalue = 13;

            Assert.Equal(expectedNalue, testList.Head.Value);
        }
Exemplo n.º 30
0
        public void TestKthOnNodeNotInList()
        {
            /// Test the last node value
            int    testNum1 = 33;
            int    testNum2 = 44;
            int    testNum3 = 55;
            int    testNum4 = 3;
            LiList testList = new LiList();

            testList.Insert(testNum1);
            testList.Insert(testNum2);
            testList.Insert(testNum3);
            // Assert.Equal(expectedValue, (testLis.FindKthFromEnd(testNum4)));
            Assert.Throws <Exception>(() => Program.FindKthFromEnd(testList, testNum4));
        }