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

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

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

Реализовать стек, используя массив. Количество элементов в стеке должно соответствовать длине массива. Поменять местами первый и последний элементы стека, а затем развернуть стек, т. е. «дно» стека сделать вершиной, а вершину – «дном». Реализовал все кроме разворота стека. Пробую развернуть с помощью дополнительной переменной, присваивая значения.
Листинг программы
  1. temp = array[0];
  2. array[0] = array.Last(); либо array[0] = array(array.Length - 1)
  3. array.Last() = temp;
Возможно ли впихнуть в метод, если выводит всего лишь одну переменную.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ConsoleApplication1
  7. {
  8. public class StackArray
  9. {
  10. int[] array;
  11. int index;
  12. public StackArray(int size)
  13. {
  14. array = new int[size];
  15. index = 0;
  16. }
  17. public bool isEmpty()
  18. {
  19. return (index == 0);
  20. }
  21. public void Push(int a)
  22. {
  23. if (array.Length == index)
  24. {
  25. Console.WriteLine("Стек заполнен");
  26. return;
  27. }
  28. array[index] = a;
  29. index++;
  30. Console.WriteLine("Введен {0} элемент", index);
  31. }
  32. public int Pop()
  33. {
  34. if (isEmpty())
  35. {
  36. Console.WriteLine("Стек пуст");
  37. return 0;
  38. }
  39. else
  40. {
  41. Console.WriteLine("Удален {0} элемент", index);
  42. index--;
  43. return array[index];
  44. }
  45. }
  46. public int Peek()
  47. {
  48. if (isEmpty())
  49. {
  50. Console.WriteLine("Стек пуст");
  51. return 0;
  52. }
  53. else
  54. {
  55. return array[index - 1];
  56. }
  57. }
  58. public int View()
  59. {
  60. for(int i = 0; i < index; i++)
  61. {
  62. Console.WriteLine("{0} ячейка = {1}", i, array[i]);
  63. }
  64. return 0;
  65. }
  66. public int Swap()
  67. {
  68. int temp = array[0];
  69. array[0] = array.Last();
  70. return array[0];
  71. }
  72. public int Revers()
  73. {
  74. Array.Reverse(array);
  75. return 0;
  76. }
  77. public static void Main(string[] args)
  78. {
  79. StackArray stack = new StackArray(5);
  80. Console.WriteLine("Заполняем стек...");
  81. Console.ReadKey();
  82. stack.Push(4);
  83. stack.Push(5);
  84. stack.Push(6);
  85. stack.Push(7);
  86. stack.Push(8);
  87. stack.Swap();
  88. Console.WriteLine(stack.View());
  89. Console.ReadKey();
  90. }
  91. }
  92. }
Результат:
Заполняем стек... Введен 1 элемент Введен 2 элемент Введен 3 элемент Введен 4 элемент Введен 5 элемент 0 ячейка = 8 1 ячейка = 5 2 ячейка = 6 3 ячейка = 7 4 ячейка = 8 0
И можно ли убрать как то из вывода 0, который из return выводится? Заранее спасибо.

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

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

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


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

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

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы