Поменять местами элементы стека (на массиве). Возможно ли запихнуть все в один метод? - C#

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

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

Реализовать стек, используя массив. Количество элементов в стеке должно соответствовать длине массива. Поменять местами первый и последний элементы стека, а затем развернуть стек, т. е. «дно» стека сделать вершиной, а вершину – «дном». Реализовал все кроме разворота стека. Пробую развернуть с помощью дополнительной переменной, присваивая значения.
temp = array[0];
array[0] = array.Last();   либо array[0] = array(array.Length - 1)
array.Last() = temp;
Возможно ли впихнуть в метод, если выводит всего лишь одну переменную.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    public class StackArray
    {
        int[] array;
        int index;
 
        public StackArray(int size)
        {
            array = new int[size];
            index = 0;
        }
 
        public bool isEmpty()
        {
            return (index == 0);
        }
 
        public void Push(int a)
        {
            
            if (array.Length == index)
            {
                Console.WriteLine("Стек заполнен");
                return;
            }
            array[index] = a;
            index++;
            Console.WriteLine("Введен {0} элемент", index);
        }
 
        public int Pop()
        {
            if (isEmpty())
            {
                Console.WriteLine("Стек пуст");
                return 0;
            }
            else
            {
                Console.WriteLine("Удален {0} элемент", index);
                index--;
                return array[index];
            }
        }
 
        public int Peek()
        {
            if (isEmpty())
            {
                Console.WriteLine("Стек пуст");
                return 0;
            }
            else
            {
                return array[index - 1];
            }
        }
 
        public int View()
        {
            for(int i = 0; i < index; i++)
            {
                Console.WriteLine("{0} ячейка = {1}", i, array[i]);
            }
            return 0;
        }
        public int Swap()
        {
            int temp = array[0];
            array[0] = array.Last();
            return array[0];
 
        }
 
        public int Revers()
        {
            Array.Reverse(array);
            return 0;
        }
 
        public static void Main(string[] args)
        {
            StackArray stack = new StackArray(5);
            Console.WriteLine("Заполняем стек...");
            Console.ReadKey();
            stack.Push(4);
            stack.Push(5);
            stack.Push(6);
            stack.Push(7);
            stack.Push(8);
            stack.Swap();
            Console.WriteLine(stack.View());
            Console.ReadKey();
        }
    }
}
Результат:
Заполняем стек... Введен 1 элемент Введен 2 элемент Введен 3 элемент Введен 4 элемент Введен 5 элемент 0 ячейка = 8 1 ячейка = 5 2 ячейка = 6 3 ячейка = 7 4 ячейка = 8 0
И можно ли убрать как то из вывода 0, который из return выводится? Заранее спасибо.

Решение задачи: «Поменять местами элементы стека (на массиве). Возможно ли запихнуть все в один метод?»

textual
Листинг программы
1) [1][2][3][4][5][6] - пусть это наш стэк.
2) извлекаем в массив - массив можно сразу заполнить в обратном порядки, т.е. первый элемент, который мы достанем из стэка займет 0 место в массиве, а последний - последнее.
(6)(5)(4)(3)(2)(1)
3) меняем местами (1)(5)(4)(3)(2)(6)
4) и обратно в стэк начиная с индекса 0 [6][2][3][4][5][1]

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


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

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

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