C#学习日记——泛型结构体+共享栈的实现

using System;
using System.Linq.Expressions;
namespace stackqueue
{
    struct Stack<T>
    {
        public T[] Array;
        public int top1;
        public int top2;
        public Stack(int len, int t1 =-1,int t2=0)
        {
            Array = new T[len];
            top1 = -1;
            top2 = len;
        }
        public bool push(int num, T data)
        {
            try
            {
            //共享栈的栈满条件是下面这句话!!!!
                if (top1+1 == top2)
                {
                    throw new Exception();
                }

                if (num == 1)
                {
                    Array[++top1] = data;
                }
                else if (num == 2)
                {
                    Array[--top2] = data;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("stacker overflow!");
                //throw e;
            }
            return true;
        }
        public T pop(int num)
        {
            try
            {
                if (num == 1)
                {
                    if (top1 == -1)
                    {
                        throw new Exception();
                    }
                }
                else
                {
                    if (top2 == Array.Length)
                    {
                        throw new Exception();
                    }
                }

            }
            catch(Exception e)
            {
                Console.WriteLine("index out of bounds!");
                //throw e;
            }
            return  num==1?Array[top1--]:Array[top2++];
        }
    }
    internal class Program
    {
        public static void Main(string[] args)
        {
            Stack<string> stack1 = new Stack<string>(10);
            //string[] stack = new string[10];
            //stack1.Array = stack;
            stack1.push(1, "1");
            stack1.push(1, "2");
            stack1.push(1, "3");
            stack1.push(1, "4");
            stack1.push(1, "5");
            stack1.push(2, "6");
            stack1.push(2, "7");
            stack1.push(2, "8");
            stack1.push(2, "9");
            stack1.push(2, "10");
            //stack1.push(2, "11");
            Console.WriteLine("pop:"+stack1.pop(1));
            stack1.push(1, "10");
            //stack1.push(1, "11");
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值