C#通过类模拟栈的先进后出效果

Stack类主要定义栈的相关操作

  class Stack
    {
        //栈  先进后出


        char[] stack;  //存储数据
        int tos;       //最顶层索引


        //初始化  给空数组一个大小   
        public Stack(int size)
        {
            stack = new char[size];
            tos = 0;

        }

        //入栈操作

        public void Push(char ch)
        {

            if (tos == stack.Length)
            {
                Console.WriteLine("栈已经满了!");
                return;
            }
            //值进栈
            stack[tos] = ch;
            Console.WriteLine(ch);
            tos++;

        }


        //出栈操作
        public char Pop()
        {

            if (tos == 0)
            {
                Console.WriteLine("栈已经空了!");
                return (char)0;
            }
            //值出栈
           
            tos--;

            return stack[tos];

        }


        //如果栈满了 就返回true
        public bool IsFull()
        {
            return tos == stack.Length;
        }


        //如果栈空了 就返回true
        public bool IsEmpty()
        {
            return tos == 0;
        }


        //返回最大容量
        public int Capacity()
        {
            return stack.Length;
        }


        //返回栈中当前栈中值的数量
        public int GetNum()
        {

            return tos;
        }



    }

下面代码是通过主函数实现栈的先进后出

  static void Main(string[] args)
        {   

            //开辟1个栈
            Stack stk1 = new Stack(10);
   
            char ch;
            int i;

            //给stk1存一些值
            Console.WriteLine("把A-J的值放入Stk1中.");
            for ( i = 0; !stk1.IsFull(); i++)
            {
                stk1.Push((char)('A' + i));
               
            }


            if(stk1.IsFull())
                Console.WriteLine("栈1已经满了!\n");


            //打印stk1的内容

            Console.WriteLine("从栈中把数据取出");
            while (!stk1.IsEmpty())
            {
                ch = stk1.Pop();
                Console.WriteLine(ch);
            }

            Console.WriteLine();

            if(stk1.IsEmpty())
                Console.WriteLine("skt1是空的");





        }

运行结果如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值