Реализация стека - C#

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

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

Здравствуйте! По заданию требуется реализовать двусвязный стек. Помогите пожалуйста дописать двусвязность. Уже несколько дней не могу догнать как это сделать.
Листинг программы
  1. public class MyStack
  2. {
  3. public string data;
  4. public MyStack L;
  5. public MyStack R;
  6. public MyStack()
  7. {
  8. this.L = null;
  9. this.R = null;
  10. }
  11. public MyStack(MyStack ob)
  12. {
  13. this.data = ob.data;
  14. this.L = ob.L;
  15. this.R = ob.R;
  16. }
  17. public void Push(string _data)
  18. {
  19. MyStack Temp = new MyStack();
  20. Temp.data = _data;
  21. Temp.L = this.L;
  22. this.L = Temp;
  23. this.R = new MyStack(this);
  24. }
  25. public void Pop()
  26. {
  27. if (this.L == null)
  28. return;
  29. MyStack Temp = this.L;
  30. this.L = Temp.L;
  31. this.R = null;
  32. Temp = null;
  33. }
  34. public string Top()
  35. {
  36. if (this.L == null)
  37. return "";
  38. else
  39. return this.L.data;
  40. }
  41. public bool IsEmpty()
  42. {
  43. return (this.L == null);
  44. }
  45. public void ShowOnDataGridView(DataGridView dataGridView)
  46. {
  47. DataGridViewInit(dataGridView);
  48. int i = 0;
  49. if (this.L == null)
  50. MessageBox.Show("Stack is empty!!1");
  51. else
  52. {
  53. MyStack Temp = this.L;
  54. while (Temp != null)
  55. {
  56. dataGridView.Rows.Add(++i, Temp.data);
  57. Temp = Temp.L;
  58. }
  59. }
  60. }

Решение задачи: «Реализация стека»

textual
Листинг программы
  1.     public class Node
  2.     {
  3.         public object Data { get; set; }
  4.  
  5.         public Node Next { get; set; }
  6.  
  7.         public Node(object d)
  8.         {
  9.             this.Data = d;
  10.         }
  11.  
  12.         public void AddNextNode(object d)
  13.         {
  14.             Node node = this;
  15.             Node newNode = new Node(d);
  16.  
  17.             while (node.Next != null)
  18.             {
  19.                 node = node.Next;
  20.             }
  21.  
  22.             node.Next = newNode;
  23.         }
  24.     }
  25.  
  26.     public class Stack
  27.     {
  28.         private Node _top = null;
  29.  
  30.         public int Count
  31.         {
  32.             get;
  33.             private set;
  34.         }
  35.  
  36.         public Stack()
  37.         {
  38.             this.Count = 0;
  39.         }
  40.  
  41.         public void Push(object obj)
  42.         {
  43.             Node newNode = new Node(obj);
  44.  
  45.             if (_top == null)
  46.                 _top = newNode;
  47.             else
  48.             {
  49.                 Node temp = _top;
  50.                 _top = newNode;
  51.                 _top.Next = temp;
  52.             }
  53.  
  54.             Count++;
  55.         }
  56.  
  57.         public object Pop()
  58.         {
  59.             Node objToPop = _top;
  60.  
  61.             _top = _top.Next;
  62.             Count--;
  63.  
  64.             return objToPop.Data;
  65.         }
  66.  
  67.         public void Clear()
  68.         {
  69.             _top = null;
  70.             Count = 0;
  71.         }
  72.     }

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


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

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

9   голосов , оценка 3.889 из 5

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

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

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