Присвоить значение одного стека другому - C#

Узнай цену своей работы

Формулировка задачи:

Есть 2 стека. Один основной, другой как буфер. Надо в одном стеке сохранять значение другого на время. Но после работы с первым стеком, второй почему-то тоже обнуляется. Что за ерунда?
            Stack<int> a = new Stack<int>();
            Stack<int> temp = new Stack<int>();
            temp = a; //Присвоили значение temp
            a.Push(3);
            a.Push(5);
            a.Push(1);
            a.Pop();// После первого же Pop значение temp тоже обнуляется
            a.Pop();
            a.Pop();
Предположим, вот так

Решение задачи: «Присвоить значение одного стека другому»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace GenericDelegate
{
    public class MyStack<T>:IEnumerable<T>
    {
        private Stack<T> tempStack;
        private Stack<T> usedStack;
 
        public MyStack()
        {
            tempStack = new Stack<T>();
            usedStack = new Stack<T>();
        }
        public void AddInTemp(T arg)
        {
            tempStack.Push(arg);
        }
        public void AddInUsed(T arg)
        {
            usedStack.Push(arg);
        }
        public void AddInBoth(T arg)
        {
            tempStack.Push(arg);
            usedStack.Push(arg);
        }
        public T GetFromUsed()
        {
            return usedStack.Pop();
        }
        public T[] GetFromBoth()
        {
            return new T[] { tempStack.Pop(), usedStack.Pop() };
        }
 
        public IEnumerator<T> GetEnumerator()
        {
            return usedStack.GetEnumerator();
        }
 
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return usedStack.GetEnumerator();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы