Поменять местами элементы стека (на массиве). Возможно ли запихнуть все в один метод? - C#
Формулировка задачи:
Реализовать стек, используя массив. Количество элементов в стеке должно соответствовать длине массива.
Поменять местами первый и последний элементы стека, а затем развернуть стек, т. е. «дно» стека сделать вершиной, а вершину – «дном».
Реализовал все кроме разворота стека. Пробую развернуть с помощью дополнительной переменной, присваивая значения.
Возможно ли впихнуть в метод, если выводит всего лишь одну переменную.
Результат:
И можно ли убрать как то из вывода 0, который из return выводится?
Заранее спасибо.
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
Решение задачи: «Поменять местами элементы стека (на массиве). Возможно ли запихнуть все в один метод?»
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]