コード例 #1
0
        public void Push(int value)
        {
            if (_stack.Count == 0)
            {
                _stack.Push(value);
                return;
            }

            _bufferStack = new SousStack();
            while (_stack.Count > 0)
            {
                if (_stack.TopMost() < value)
                {
                    _bufferStack.Push(_stack.TopMost());
                    _stack.Pop();
                }
            }

            _stack.Push(value);
            if (_bufferStack.Count > 0)
            {
                _stack.Push(_bufferStack.TopMost());
                _bufferStack.Pop();
            }
        }
コード例 #2
0
 private void PushToPopStack()
 {
     _popStack = new SousStack();
     while (_pushStack.Count > 0)
     {
         _popStack.Push(_popStack.TopMost());
         _popStack.Pop();
     }
 }
コード例 #3
0
        public void Push(int value)
        {
            if (_count / MAX_SOUS_STACK == MAX_STACK)
            {
                throw new IndexOutOfRangeException("Stack reach maximum elements.");
            }

            if (_count < MAX_SOUS_STACK)
            {
                _countSStack = 0;
            }
            else
            {
                if (_count % MAX_SOUS_STACK == 0)
                {
                    _countSStack             = (int)_countSStack / MAX_SOUS_STACK + 1;
                    _arrSStack[_countSStack] = new SousStack();
                }
            }

            _arrSStack[_countSStack].Push(value);

            _count++;
        }
コード例 #4
0
 public Ex4_3()
 {
     _stack       = new SousStack();
     _bufferStack = new SousStack();
 }
コード例 #5
0
 public Ex3_3()
 {
     _pushStack = new SousStack();
     _popStack  = new SousStack();
 }