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