C# 用链表表示栈

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

namespace ConsoleApp12
{
    internal class Program
    {
        static void Main(string[] args)
        {
        }
    }

    public class Node
    {
        public int Data;
        public Node next;

        public Node(int data) 
        {
            this.Data = data;   
            this.next = null;
        }
    }

    public class StackArray
    {
        Node Head;//链表头指针
        Node Front;//链表尾指针

        public bool IsEmpty()//判断是否为空
        {
            if (Front == null) return true;
            else return false;  
        }

        public void Push(int data)//压入栈
        {
            Node newNode = new Node(data);//先创建一个链表来存储要压入的数据

            if (IsEmpty())//为空
            {
                //两个指针都指向newNode
                Head = newNode;
                Front = newNode;
            }
            else//不为空
            {
                //Head所指向的数据的下一个索引是newNode
                Head.next = newNode;    
                //Head指向newNode
                Head = newNode;
            }
        }

        public void Pop()//出栈
        {
            Node newNode = Front;

            if (IsEmpty())
            {
                throw new Exception("堆栈是空的!");
            }
            else if (newNode == Head)
            {
                int data = newNode.Data;
                //将两个指针置空
                Head = null;
                Front = null;
                Console.WriteLine(data);
            }
            else
            {
                //指向Head所指向的数据的上一个索引
                while (newNode.next != Head)
                {
                    newNode = newNode.next;
                }

                int Data = Head.Data;
                Head = newNode;
                Console.WriteLine(Data);    
            }
        }
    }
}

 个人见解,有错之处请指出!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值