美文网首页
链栈及简单实现

链栈及简单实现

作者: 周末的游戏之旅 | 来源:发表于2019-08-02 15:35 被阅读0次

链栈

用带有头节点的单链表实现的栈。
用头节点当栈顶指针。


当top.Next==null时,栈空。

实现

Node

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinkStack
{
    class Node<T>
    {
        T data;
        Node<T> next;
        
        /// <summary>
        /// 构造器
        /// </summary>
        public Node()
        {
            this.Data = default(T);
            this.Next = null;
        }

        /// <summary>
        /// 构造器
        /// </summary>
        /// <param name="data"></param>
        public Node(T data)
        {
            this.Data = data;
        }

        public T Data { get => data; set => data = value; }
        internal Node<T> Next { get => next; set => next = value; }
    }
}

LinkStack

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinkStack
{
    class LinkStack<T>
    {
        Node<T> top;

        public LinkStack()
        {
            this.top = new Node<T>();
        }

        /// <summary>
        /// 入栈
        /// </summary>
        /// <param name="data"></param>
        public void Push(T data)
        {
            //新建节点 
            Node<T> tmp = new Node<T>(data);
            //挂载节点
            tmp.Next = this.top.Next;
            this.top.Next = tmp;
        }

        /// <summary>
        /// 出栈
        /// </summary>
        /// <returns></returns>
        public T Pop()
        {
            if (top.Next == null) return default(T);

            //保存栈顶节点
            Node<T> tmp = top.Next;
            //悬空栈顶节点
            top.Next = top.Next.Next;
            return tmp.Data;
        }
    }
}

Program

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinkStack
{
    class Program
    {
        static void Main(string[] args)
        {
            LinkStack<string> ls = new LinkStack<string>();

            ls.Push("a");
            ls.Push("b");
            ls.Push("c");
            ls.Push("d");

            for (int i = 0; i < 4; i++)
            {
                Console.WriteLine(ls.Pop());
            }
        }
    }
}

相关文章

  • 链栈及简单实现

    链栈 用带有头节点的单链表实现的栈。用头节点当栈顶指针。 当top.Next==null时,栈空。 实现 Node...

  • C语言实现链栈以及基本操作

    链栈,即用链表实现栈存储结构。链栈的实现思路同顺序栈类似,顺序栈是将数顺序表(数组)的一端作为栈底,另一端为栈顶;...

  • 实现栈_基于数组

    基于动态数组实现栈声明栈的接口 实现类及测试

  • 数据结构-其他线性结构(栈和队列)

    大纲:*掌握栈的定义、栈的存贮结构及基本操作的实现。理解用栈实现表达式的求值,递归过程及实现。掌握队列的定义、存贮...

  • 数据结构之栈

    栈:操作受限的线性表,后进先出栈的内部存储既可以用顺序表,也可以用链表,分别称作顺序栈和链栈。 先来实现一个简单的...

  • 3. 栈的操作

    1. 栈的操作-c语言实现2. 栈操作的实现-顺序栈和链栈 3. 栈的实现与遍历4. c语言的函数调用栈5. 两个...

  • 【C语言实现】链栈

    简书内代码已上传GitHub:点击我 去GitHub查看代码这篇文章主要解释下链栈是什么和链栈的实现以及链栈和顺序...

  • 顺序存储/链式存储设计栈结构

    一、顺序存储1.1 定义常量及结构 1.2 栈方法实现 二、链式存储2.1 定义常量及结构 2.2 栈方法实现

  • 2018-10-04 数据结构学习---链栈的实现

    2018.10.04 数据结构学习---链栈的实现

  • LeetCode 每日一题 [12] 用队列实现栈

    LeetCode 用队列实现栈 [简单] 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈pop(...

网友评论

      本文标题:链栈及简单实现

      本文链接:https://www.haomeiwen.com/subject/tdbldctx.html