Поменять местами элементы стека (на массиве). Возможно ли запихнуть все в один метод? - 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]
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д