using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Zhan
{
class StackX
{
/// <summary>
/// 栈的C#代码 Stack
/// </summary>
/// <param name="args"></param>
///
private int maxSize;
private long[] stackArray;
private int top;
//---------------------------------------------------------------
public StackX(int s) //constructor
{
maxSize = s; //set array size
stackArray = new long[maxSize]; //create array
top = -1; //no items yet
}
//---------------------------------------------------------------
public void push(long j) //put item on top of stack
{
if (top == maxSize - 1)
{
Console.WriteLine(j + " Can't insert: Stack is full");
}
else
{
stackArray[++top] = j;
}
}
//---------------------------------------------------------------
public long pop() //take item from top of stack
{
if (top == -1)
{
Console.WriteLine("Can't pop: Stack is empty");
return Convert.ToUInt32(0);
}
else
{
return stackArray[top--];
}
}
//---------------------------------------------------------------
public long Peek() //peek at top of stack
{
return stackArray[top];
/*
for (int i = 0; i <= top; i++)
{
Console.Write(stackArray[i] + " ");
}
*/
}
//---------------------------------------------------------------
public bool isEmpty() //true if stack is empty
{
return (top == -1);
}
//---------------------------------------------------------------
public bool isFull() //true if stack is full
{
return (top == maxSize - 1);
}
//---------------------------------------------------------------
static void Main(string[] args)
{
StackX theStack = new StackX(10); //make new stack
theStack.push(20); //push items onto stack
theStack.push(40);
theStack.push(60);
theStack.push(80);
//Console.Write(theStack.Peek()+"\n");
while (!theStack.isEmpty()) //until it's empty
{
long value = theStack.pop(); //delete item from stack
Console.Write(value); //display it
Console.Write(" ");
}
Console.ReadLine();
}
}
}
Result: