using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public class StackNode<T> { public T Data; public StackNode<T> Next; public StackNode() { Data = default(T); Next = null; } public StackNode(T datat) { Data = datat; Next = null; } } /// <summary> /// 栈的链式存贮 /// </summary> /// <typeparam name="T"></typeparam> public class LinkStack<T> { /// <summary> /// 栈顶的节点 /// </summary> public StackNode<T> Top; public int Count; public LinkStack() { Top = null; Count = 0; } /// <summary> /// 压栈 /// </summary> public void Push(T data) { StackNode<T> newNode = new StackNode<T>(data); Count++; if (Top==null) { Top = newNode; return; } newNode.Next = Top; //Top节点重新赋值 Top = newNode; } /// <summary> /// 弹栈 /// </summary> /// <returns></returns> public T Pop() { if (Count == 0) return default(T); T data= Top.Data; Top = Top.Next; Count--; return data; } } }