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");
}
}
}
C#学习日记——泛型结构体+共享栈的实现
最新推荐文章于 2021-12-04 16:53:37 发布