Реализация стека - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д