Очередь queue на двух стеках. C C++ в C#

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

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

Может кто перевести на С#?
#include <iostream>
using std::cout;
using std::endl;
#include <stack>
using std::stack;
 
class queue
{
    stack<int> s1;
    stack<int> s2;
public:
    void push(int n)
    {
        s1.push(n);
    }
    void pop()
    {
        while(!s1.empty())
        {
            s2.push(s1.top());
            s1.pop();
        }
        s2.pop();
        //добавляем элементы обратно
        while(!s2.empty())
        {
            s1.push(s2.top());
            s2.pop();
        }
    }
    void print()
    {
        while(!s1.empty())
        {
            s2.push(s1.top());
            s1.pop();
        }
        //вывод элементов
        while(!s2.empty())
        {
            cout <<s2.top()<<' ';
            s1.push(s2.top());
            s2.pop();
        }
    }
};
 
int main()
{
    queue q;
    q.push(1);
    q.push(2);
    q.push(3);
 
    q.print();
    cout <<endl;
 
    //удаляем элемент очереди
    q.pop();
    q.print();
    cout <<endl;
 
    //удаляем элемент очереди
    q.pop();
    q.print();
    cout <<endl;
 
    return 0;
}
Что не кто не может помочь с переводом на с#? Так сложно помочь?Я просто не знаю с++.

Решение задачи: «Очередь queue на двух стеках. C C++ в C#»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Text;
 
class MyQueue
{
    private Stack<int> stack = new Stack<int>();
    private Stack<int> temp = new Stack<int>();
 
    public void Push(int Value)
    {
        stack.Push(Value);
    }
 
    public int Pop()
    {
        while (stack.Count != 0)
            temp.Push(stack.Pop());
 
        int Value = temp.Pop();
 
        while (temp.Count != 0)
            stack.Push(temp.Pop());
 
        return Value;
    }
 
    public override string ToString()
    {
        StringBuilder sb = new StringBuilder();
        while (stack.Count != 0)
            temp.Push(stack.Pop());
 
        while (temp.Count != 0)
        {
            sb.Append(temp.Peek());
            sb.Append(" ");
            stack.Push(temp.Pop());
        }
 
        return sb.ToString();
    }
}
 
class Program
{
    static void Main()
    {
        MyQueue q = new MyQueue();
        q.Push(1);
        q.Push(2);
        q.Push(3);
 
        Console.WriteLine("{0,-10} - исходная очередь", q);
        Console.WriteLine("{1,-10} - После удаления {0}", q.Pop(), q);
        Console.WriteLine("{1,-10} - После удаления {0}", q.Pop(), q);
 
        Console.ReadLine();
    }
}

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


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

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

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