C#数据结构-链栈
发布时间:2021-05-21 07:26:45 所属栏目:大数据 来源: https://www.jb51.cc
导读:上一篇我们通过数组结构实现了栈结构(准确的说是栈的顺序存储结构),现在我们通过链(单链)存储栈,也就是链栈。 ? 通常对于正向单链表来说,是从头节点开始,在链的尾部附加节点,前一个节点的指针指向附加节点;对于实现栈结构来说是在栈顶(链尾部)插
上一篇我们通过数组结构实现了栈结构(准确的说是栈的顺序存储结构),现在我们通过链(单链)存储栈,也就是链栈。 ? 通常对于正向单链表来说,是从头节点开始,在链的尾部附加节点,前一个节点的指针指向附加节点;对于实现栈结构来说是在栈顶(链尾部)插入节点,指针指向上一个节点,所以实现栈结构的链可以说是反向单链表。 public class LinkStackNode<T> { /// <summary> /// 数据存储 </summary> public T data { get; set; } 节点指针 public LinkStackNode<T> next { ; } public LinkStackNode(T d) { data = d; } } <summary> 链栈 </summary> class LinkStack<T> { //对于栈来说,不需要又链的头节点,所以此处我们忽略 栈顶 public LinkStackNode<T> top { 总长度 int count { 入栈 </summary> <param name="data"></param> void push(T data) { LinkStackNode<T> linkedListNode = new LinkStackNode<T>(data); linkedListNode.next = top; top = linkedListNode; count++; } 取栈顶节点,但不删除该节点 <returns></returns> public LinkStackNode<T> Peek() { if(count == 0) throw new InvalidOperationException("空栈"); return top; } 出栈 Pop() { if (count == ); LinkStackNode<T> tp = top.next; count--; tp; } 打印链栈所有元素 showAll() { var node = top; for (int i = 0; i < count; i++) { Console.WriteLine(${i},data:{node.data}); node = node.next; } } } 测试: LinkStack<string> link = new LinkStack<string>(); link.push(第一); link.push(第二第三); link.showAll(); Console.WriteLine(); Console.WriteLine($Peek:{link.Peek().data}); Console.WriteLine(); link.push(第四第五); Console.WriteLine(); link.showAll(); link.Pop(); Console.WriteLine(); link.showAll(); ? ? ? ? ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |