C# Help - C# Community and Information

Simple Stack Implementation

November 21st, 2005 in C# Language by admin

namespace Stack
{
using System;

public class Stack
{
private Node first = null;
private int count = 0;

/******************************************************************************************************************
Property Procedures do not accept any parameters. Note the diff in the function definition (no parenthesis)
*******************************************************************************************************************/

public bool Empty
{
/*******************************************
Property Get Procedure
********************************************/
get
{
return (first == null);
}
}

public int Count
{
/*******************************************
Property Get Procedure
********************************************/
get
{
return count;
}
}

public object Pop()
{
if (first == null)
{
throw new InvalidOperationException ("Cant pop from an empty stack");
}
else
{
object temp = first.Value;
first = first.Next;
count–;
return temp;
}
}

public void Push(object o)
{
first = new Node(o, first);
count++;
}

class Node
{
public Node Next;
public object Value;

public Node(object value) : this(value, null) {}

public Node(object value, Node next)
{
Next = next;
Value = value;
}
}
}

class StackTest
{
static void Main()
{
Stack s = new Stack();

if (s.Empty)
Console.WriteLine("Stack is Empty");
else
Console.WriteLine("Stack is not Empty");

for (int i = 0; i < 5; i++)
s.Push(i);

Console.WriteLine("Items in Stack {0}", s.Count);
for (int i = 0; i < 5; i++)
Console.WriteLine("Popped Item is {0} and the count is {1}", s.Pop(), s.Count);

s = null;
}
}
}

//*********END OF CODE

This is what the output should look like:

Stack is Empty
Items in Stack 5
Popped Item is 4 and the count is 4
Popped Item is 3 and the count is 3
Popped Item is 2 and the count is 2
Popped Item is 1 and the count is 1
Popped Item is 0 and the count is 0

Most Commented Articles :

Leave a Reply

RSS Feed Follow Us on Twitter!