Search Forum
(53671 Postings)
Search Site/Articles

Archived Articles
712 Articles

C# Books
C# Consultants
What Is C#?
Download Compiler
Code Archive
Archived Articles
Advertise
Contribute
C# Jobs
Beginners Tutorial
C# Contractors
C# Consulting
Links
C# Manual
Contact Us
Legal

GoDiagram for .NET from Northwoods Software www.nwoods.com


 
Printable Version


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