public void ShowVertexGraphWithDepth(GraphVertex vertexStart)
        {
            Console.Write(vertexStart + "부터 탐색 : ");

            GraphVertex vertexVisit = vertexStart;

            VisitVertex(vertexVisit);

            ListStack <GraphVertex> stack = new ListStack <GraphVertex>();

            stack.Push(vertexVisit);

            while (_lists[(int)vertexVisit].ReadFirst())
            {
                bool visitFlag  = false;
                var  vertexNext = _lists[(int)vertexVisit].CurrentNode.Data;

                if (VisitVertex(vertexNext))
                {
                    stack.Push(vertexVisit);

                    vertexVisit = vertexNext;
                    visitFlag   = true;
                }
                else
                {
                    while (_lists[(int)vertexVisit].ReadNext())
                    {
                        vertexNext = _lists[(int)vertexVisit].CurrentNode.Data;

                        if (!VisitVertex(vertexNext))
                        {
                            continue;
                        }

                        stack.Push(vertexVisit);

                        vertexVisit = vertexNext;
                        visitFlag   = true;
                        break;
                    }
                }

                if (visitFlag)
                {
                    continue;
                }
                if (stack.IsEmpty())
                {
                    break;
                }

                vertexVisit = stack.Pop();
            }

            Console.WriteLine();

            InitializeVisitInformation();
        }
 public void ObjectStackTest()
 {
     var stack = new ListStack<object>();
     stack.Push(1010101);
     stack.Push(-Math.PI);
     stack.Push("ya");
     Assert.AreEqual("ya", stack.Pop());
     Assert.AreEqual(-Math.PI, stack.Pop());
     Assert.AreEqual(1010101, stack.Pop());
 }
Esempio n. 3
0
        public void TestPush()
        {
            IStack <int> sut = new ListStack <int>();

            Assert.Throws <ArgumentOutOfRangeException>(() => sut.Top());
            sut.Push(3);
            Assert.Equal(3, sut.Top());
            sut.Push(4);
            sut.Push(5);
            Assert.Equal(5, sut.Top());
        }
        public void ObjectStackTest()
        {
            var stack = new ListStack <object>();

            stack.Push(1010101);
            stack.Push(-Math.PI);
            stack.Push("ya");
            Assert.AreEqual("ya", stack.Pop());
            Assert.AreEqual(-Math.PI, stack.Pop());
            Assert.AreEqual(1010101, stack.Pop());
        }
 public void ListStackTest()
 {
     var stack = new ListStack<int>();
     stack.Push(0);
     stack.Push(10);
     stack.Push(-10);
     Assert.AreEqual(-10, stack.Pop());
     Assert.IsFalse(stack.IsEmpty());
     Assert.AreEqual(10, stack.Pop());
     Assert.AreEqual(0, stack.Pop());
     Assert.IsTrue(stack.IsEmpty());
 }
        public void ListStackTest()
        {
            var stack = new ListStack <int>();

            stack.Push(0);
            stack.Push(10);
            stack.Push(-10);
            Assert.AreEqual(-10, stack.Pop());
            Assert.IsFalse(stack.IsEmpty());
            Assert.AreEqual(10, stack.Pop());
            Assert.AreEqual(0, stack.Pop());
            Assert.IsTrue(stack.IsEmpty());
        }
Esempio n. 7
0
        public void TestPop()
        {
            IStack <int> sut = new ListStack <int>();

            sut.Push(1);
            sut.Push(2);
            sut.Push(3);
            sut.Push(4);
            Assert.Equal(4, sut.Pop());
            Assert.Equal(3, sut.Top());
            sut.Pop();
            sut.Pop();
            Assert.Equal(1, sut.Pop());
            Assert.True(sut.IsEmpty());
        }
 public void EmptyStackExceptionTest()
 {
     var stack = new ListStack<int>();
     stack.Push(1010101);
     stack.Pop();
     stack.Pop();
 }
Esempio n. 9
0
        public static TreeNode <char> MakeExpressionTree(string expression)
        {
            ListStack <TreeNode <char> > stack = new ListStack <TreeNode <char> >();

            foreach (char character in expression)
            {
                TreeNode <char> currentNode = new TreeNode <char>();

                if (char.IsDigit(character))
                {
                    currentNode.Data = character;
                }
                else
                {
                    currentNode.RightNode = new TreeNode <char> {
                        Data = stack.Pop().Data
                    };
                    currentNode.LeftNode = new TreeNode <char> {
                        Data = stack.Pop().Data
                    };

                    currentNode.Data = character;
                }

                stack.Push(currentNode);
            }

            return(stack.Pop());
        }
Esempio n. 10
0
 private void StartActivityExecutionTracking(Activity activity) 
 { 
     lock (s_activitiesStackSync) 
     { 
         _executingActivitiesStack.Push(activity.Name); 
     } 
     var eventArgs = new WorkflowExecutionContextEventArgs(this, activity); 
     ActivityExecutionStarting.RaiseEvent(this, eventArgs); 
     if (!Tracking) 
         return; 
     if (_restoring) 
     { 
         if (_trackingActivitiesStack[_restoredActivitiesCount] != activity.Name) 
         { 
             var msg = string.Format( 
                 "Ошибка при восстановлении выполнения потока работ: " + 
                 "действие {0}, которое начинает выполнение, отличается от действия {1}, " + 
                 "которое, согласно информации в контексте, должно начать выполнение", 
                 activity.Name, _trackingActivitiesStack[_restoredActivitiesCount]); 
             throw new ActivityExecutionException(msg, activity, this); 
         } 
         _restoredActivitiesCount++; 
         if (_restoredActivitiesCount == _trackingActivitiesStack.Count) 
             _restoring = false; 
         return; 
     } 
     _trackingActivitiesStack.Push(activity.Name); 
     ExecutionContextChanged.RaiseEvent(this, eventArgs); 
 } 
Esempio n. 11
0
        public void EmptyStackExceptionTest()
        {
            var stack = new ListStack <int>();

            stack.Push(1010101);
            stack.Pop();
            stack.Pop();
        }
Esempio n. 12
0
        public void ListStackPush()
        {
            var stack = new ListStack <int>();

            for (var i = 0; i < operationsCount; ++i)
            {
                stack.Push(i);
            }
        }
Esempio n. 13
0
        public void TestIsEmpty()
        {
            IStack <int> sut = new ListStack <int>();

            Assert.True(sut.IsEmpty());

            sut.Push(5);
            Assert.False(sut.IsEmpty());
        }
Esempio n. 14
0
    public void AddElementTo_EmptyStack_ShouldHaveOneCount()
    {
        // Arrange
        ListStack<int> nums = new ListStack<int>();
        nums.Push(3);

        // Act
        int count = nums.Count;

        // Assert
        Assert.AreEqual(1, count);
    }
Esempio n. 15
0
    public void CheckCountWhenPopElement_ShouldSameAsBeforePush()
    {
        // Arrange
        ListStack<int> nums = new ListStack<int>();
        nums.Push(4);
        nums.Pop();

        // Act
        int count = nums.Count;

        // Assert
        Assert.AreEqual(0, count);
    }
Esempio n. 16
0
    public static void Main(string[] args)
    {
        ListStack s = new ListStack();

        for (int i = 1; i <= 100; i++)
        {
            s.Push(i);
        }
        for (int i = 1; i <= 50; i++)
        {
            s.Pop();
        }
        s.print();
    }
Esempio n. 17
0
 public IfExprent(int ifType, ListStack <Exprent> stack, HashSet <int> bytecodeOffsets
                  )
     : this(null, bytecodeOffsets)
 {
     //public static final int IF_CAND = 16;
     //public static final int IF_COR = 17;
     //public static final int IF_NOT = 18;
     if (ifType <= If_Le)
     {
         stack.Push(new ConstExprent(0, true, null));
     }
     else if (ifType <= If_Nonnull)
     {
         stack.Push(new ConstExprent(VarType.Vartype_Null, null, null));
     }
     if (ifType == If_Value)
     {
         condition = stack.Pop();
     }
     else
     {
         condition = new FunctionExprent(Func_Types[ifType], stack, bytecodeOffsets);
     }
 }
Esempio n. 18
0
        public static void DisplayListStack()
        {
            ListStack <int> stack = new ListStack <int>();

            for (int i = 1; i <= 5; i++)
            {
                stack.Push(i);
            }

            while (!stack.IsEmpty())
            {
                stack.Pop();
                Console.Write(stack.CurrentData + " ");
            }
        }
Esempio n. 19
0
    /// <summary>
    /// Creates a new step block at the specified position / rotation
    /// </summary>
    /// <param name="position"></param>
    /// <param name="rotation"></param>
    public void AddNewBlock(Vector3 position, Quaternion rotation)
    {
        if (StepBlockPrefab != null)
        {
            var obj = Instantiate(StepBlockPrefab, position, rotation, StepBlockSpawnParent);
            // Keep a tally of how many are spawned
            spawned++;
            // Format the name as this will be shown in the UI
            obj.name = obj.name.Substring(0, 4) + " " + (spawnedSteps.items.Count + 1);
            // Add to stack
            spawnedSteps.Push(obj);

            // Update UI
            SelectDropdown.AddStep(obj);
            SelectSlider.AddStep(obj);
        }
    }
Esempio n. 20
0
        public static void ListStackTest(int quantity)
        {
            var stack = new ListStack <int>();

            var start = DateTime.Now;

            for (var i = 0; i < quantity; i++)
            {
                stack.Push(i);
            }
            for (var i = 0; i < quantity; i++)
            {
                stack.Pop();
            }
            var duration = DateTime.Now.Ticks - start.Ticks;

            Console.WriteLine($"\t  ListStack  \t {quantity}  \t {duration / 10000}ms");
        }
Esempio n. 21
0
    public void CheckToArrayMethod_ForStack_ShouldReturnArrayWithReversedNumebrs()
    {
        // Arrange
        int[] arr = new int[] { 1, 2, 3, 4 };
        ListStack<int> stack = new ListStack<int>();

        // Act
        for (int i = 0; i < arr.Length; i++)
        {
            stack.Push(arr[i]);
        }

        int[] stackArr = stack.ToArray();

        // Assert
        for (int i = 0, j = arr.Length - 1; i < stackArr.Length; i++, j--)
        {
            Assert.AreEqual(arr[j], stackArr[i]);
        }
    }
        private void Visit(Statement stat)
        {
            lstack.Push(stat);
            Sharpen.Collections.Put(dfsnummap, stat, ncounter);
            Sharpen.Collections.Put(lowmap, stat, ncounter);
            ncounter++;
            List <Statement> lstSuccs = stat.GetNeighbours(StatEdge.Type_Regular, Statement.Direction_Forward
                                                           );

            // TODO: set?
            lstSuccs.RemoveAll(setProcessed);
            foreach (Statement succ in lstSuccs)
            {
                int?secvalue;
                if (tset.Contains(succ))
                {
                    secvalue = dfsnummap.GetOrNullable(succ);
                }
                else
                {
                    tset.Add(succ);
                    Visit(succ);
                    secvalue = lowmap.GetOrNullable(succ);
                }
                Sharpen.Collections.Put(lowmap, stat, System.Math.Min(lowmap.GetOrNullable(stat) ?? 0,
                                                                      secvalue ?? 0));
            }
            if (lowmap.GetOrNullable(stat) == dfsnummap.GetOrNullable(stat))
            {
                List <Statement> lst = new List <Statement>();
                Statement        v;
                do
                {
                    v = lstack.Pop();
                    lst.Add(v);
                }while (v != stat);
                components.Add(lst);
            }
        }
Esempio n. 23
0
 /// <summary>
 /// 移入当前符号,并将指定状态压栈。
 /// </summary>
 /// <param name="token">要移入的符号。</param>
 /// <param name="state">要压栈的状态。</param>
 private void Shift(Token <T> token, int state)
 {
     stateStack.Push(state);
     tokenStack.Push(token);
 }
Esempio n. 24
0
    public void TestAutoGrowFunctionality_With1000Elemenets()
    {
        // Arrange
        ListStack<string> words = new ListStack<string>();
        var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        var random = new Random();
        int boundary = 1000;

        // Act and Assert
        Assert.AreEqual(0, words.Count);

        for (int i = 0; i < boundary; i++)
        {
            var result = new string(
                Enumerable.Repeat(chars, 8)
                          .Select(s => s[random.Next(s.Length)])
                          .ToArray());

            words.Push(result);
            Assert.AreEqual(i + 1, words.Count);
        }

        while (words.Count > 0)
        {
            Assert.AreEqual(boundary, words.Count);
            words.Pop();
            boundary--;
        }
    }
Esempio n. 25
0
        private bool CheckVertexConnection(GraphVertex vertex1, GraphVertex vertex2)
        {
            GraphVertex             visit = vertex1;
            ListStack <GraphVertex> stack = new ListStack <GraphVertex>();

            VisitVertex(visit);
            stack.Push(visit);

            while (_lists[(int)visit].ReadFirst())
            {
                GraphVertex next    = _lists[(int)visit].CurrentNode.Data;
                bool        visited = false;

                if (next == vertex2)
                {
                    InitializeVisitInformation();
                    return(true);
                }

                if (VisitVertex(next))
                {
                    stack.Push(visit);
                    visit   = next;
                    visited = true;
                }
                else
                {
                    while (_lists[(int)visit].ReadNext())
                    {
                        next = _lists[(int)visit].CurrentNode.Data;

                        if (next == vertex2)
                        {
                            InitializeVisitInformation();
                            return(true);
                        }

                        if (!VisitVertex(next))
                        {
                            continue;
                        }

                        stack.Push(visit);
                        visit   = next;
                        visited = true;
                        break;
                    }
                }

                if (visited)
                {
                    continue;
                }
                if (stack.IsEmpty())
                {
                    break;
                }

                visit = stack.Pop();
            }

            InitializeVisitInformation();

            return(false);
        }
Esempio n. 26
0
    public void PushPopElement_FromStackWithCapacityOne_CheckCount()
    {
        // Arrange
        ListStack<int> nums = new ListStack<int>();

        // Act and Assert
        Assert.AreEqual(0, nums.Count);

        int expectedElementSecond = 1;
        nums.Push(expectedElementSecond);
        Assert.AreEqual(1, nums.Count);

        int expectedElementFirst = 3;
        nums.Push(expectedElementFirst);
        Assert.AreEqual(2, nums.Count);

        Assert.AreEqual(expectedElementFirst, nums.Pop());
        Assert.AreEqual(1, nums.Count);

        Assert.AreEqual(expectedElementSecond, nums.Pop());
        Assert.AreEqual(0, nums.Count);
    }
Esempio n. 27
0
 public AutoIndentWriter(TextWriter writer, string newline)
 {
     this._writer = writer;
     _indents.Push(null); // s oftart with no indent
     this._newline = newline;
 }
Esempio n. 28
0
        public void PushTest()
        {
            list.Push(1);
            list.Push(2);
            list.Push(3);

            Assert.IsTrue(list.IsContaining(1));
            Assert.IsTrue(list.IsContaining(2));
            Assert.IsTrue(list.IsContaining(3));
        }
Esempio n. 29
0
        /// <summary>
        /// 读取输入流中的下一个词法单元并提升输入流的字符位置。
        /// </summary>
        /// <param name="state">DFA 的起始状态。</param>
        /// <returns>词法单元读入是否成功。</returns>
        protected override bool InternalReadToken(int state)
        {
            stateStack.Clear();
            int startIndex = Source.Index;

            while (true)
            {
                state = TransitionState(state, base.Source.Read());
                if (state == -1)
                {
                    // 没有合适的转移,退出。
                    break;
                }
                IList <int> symbolIndex = base.LexerRule.States[state].SymbolIndex;
                if (symbolIndex.Count > 0)
                {
                    // 将接受状态记录在堆栈中。
                    stateStack.Push(new AcceptState(symbolIndex, Source.Index));
                }
            }
            // 遍历终结状态,执行相应动作。
            while (stateStack.Count > 0)
            {
                AcceptState astate = stateStack.Pop();
                for (int i = 0; i < astate.SymbolIndex.Count; i++)
                {
                    int acceptState = astate.SymbolIndex[i];
                    if (acceptState >= base.LexerRule.SymbolCount)
                    {
                        // 跳过向前看的头状态。
                        break;
                    }
                    int lastIndex = astate.Index;
                    int?trailing  = base.LexerRule.Symbols[acceptState].Trailing;
                    if (trailing.HasValue)
                    {
                        // 是向前看状态。
                        int index = trailing.Value;
                        if (index > 0)
                        {
                            // 前面长度固定。
                            lastIndex = startIndex + index;
                        }
                        else if (index < 0)
                        {
                            // 后面长度固定,注意此时 index 是负数。
                            lastIndex += index;
                        }
                        else
                        {
                            // 前后长度都不固定,需要沿着堆栈向前找。
                            int target = int.MaxValue - acceptState;
                            for (int j = stateStack.Count - 1; j >= 0; j--)
                            {
                                if (ContainsTrailingHead(stateStack[j].SymbolIndex, target))
                                {
                                    lastIndex = stateStack[j].Index;
                                    break;
                                }
                            }
                        }
                    }
                    // 将文本和流调整到与接受状态匹配的状态。
                    Source.Index = lastIndex;
                    DoAction(base.LexerRule.Symbols[acceptState].Action, acceptState);
                    if (!base.IsReject)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
 public override int Mark()
 {
     _realTokens.Push(_realTokens.Peek());
     return(base.Mark());
 }