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

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

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

Здравствуйте! По заданию требуется реализовать двусвязный стек. Помогите пожалуйста дописать двусвязность. Уже несколько дней не могу догнать как это сделать.
public class MyStack
    {
        public string data;
        public MyStack L;
        public MyStack R;
 
        public MyStack()
        {
            this.L = null;
            this.R = null;
        }
 
        public MyStack(MyStack ob)
        {
            this.data = ob.data;
            this.L = ob.L;
            this.R = ob.R;
        }
 
        public void Push(string _data)
        {
            MyStack Temp = new MyStack();
            Temp.data = _data;
            Temp.L = this.L;
            
            this.L = Temp;
            this.R = new MyStack(this);
        }
 
        public void Pop()
        {
            if (this.L == null)
                return;
            MyStack Temp = this.L;
            this.L = Temp.L;
            this.R = null;
            Temp = null;
        }
 
        public string Top()
        {
            if (this.L == null)
                return "";
            else
                return this.L.data;
        }
 
        public bool IsEmpty()
        {
            return (this.L == null);
        }
 
        public void ShowOnDataGridView(DataGridView dataGridView)
        {
            DataGridViewInit(dataGridView);
            int i = 0;
            if (this.L == null)
                MessageBox.Show("Stack is empty!!1");
            else
            {
                MyStack Temp = this.L;
                while (Temp != null)
                {
                    dataGridView.Rows.Add(++i, Temp.data);
                    Temp = Temp.L;
                }
            }
        }

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

textual
Листинг программы
    public class Node
    {
        public object Data { get; set; }
 
        public Node Next { get; set; }
 
        public Node(object d)
        {
            this.Data = d;
        }
 
        public void AddNextNode(object d)
        {
            Node node = this;
            Node newNode = new Node(d);
 
            while (node.Next != null)
            {
                node = node.Next;
            }
 
            node.Next = newNode;
        }
    }
 
    public class Stack
    {
        private Node _top = null;
 
        public int Count
        {
            get;
            private set;
        }
 
        public Stack()
        {
            this.Count = 0;
        }
 
        public void Push(object obj)
        {
            Node newNode = new Node(obj);
 
            if (_top == null)
                _top = newNode;
            else
            {
                Node temp = _top;
                _top = newNode;
                _top.Next = temp;
            }
 
            Count++;
        }
 
        public object Pop()
        {
            Node objToPop = _top;
 
            _top = _top.Next;
            Count--;
 
            return objToPop.Data;
        }
 
        public void Clear()
        {
            _top = null;
            Count = 0;
        }
    }

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


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

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

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