A stack class for characters : Stack « Collections Data Structure « C# / C Sharp






A stack class for characters

A stack class for characters
  
/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// A stack class for characters.   
  
using System;  
  
class Stack {   
  // these members are private 
  char[] stck; // holds the stack  
  int tos;     // index of the top of the stack  
   
  // Construct an empty Stack given its size.  
  public Stack(int size) {   
    stck = new char[size]; // allocate memory for stack  
    tos = 0;   
  }   
  
  // Push characters onto the stack.  
  public void push(char ch) {   
    if(tos==stck.Length) {   
      Console.WriteLine(" -- Stack is full.");   
      return;   
    }   
       
    stck[tos] = ch;  
    tos++;  
  }   
   
  // Pop a character from the stack.  
  public char pop() {   
    if(tos==0) {   
      Console.WriteLine(" -- Stack is empty.");   
      return (char) 0;    
    }   
     
    tos--;   
    return stck[tos];   
  } 
 
  // Return true if the stack is full. 
  public bool full() { 
    return tos==stck.Length;    
  } 
 
  // Return true if the stack is empty. 
  public bool empty() { 
    return tos==0; 
  } 
 
  // Return total capacity of the stack. 
  public int capacity() { 
    return stck.Length; 
  } 
 
  // Return number of objects currently on the stack. 
  public int getNum() { 
    return tos; 
  } 
}  

// Demonstrate the Stack class.   
 

public class StackDemo31 {   
  public static void Main() {   
    Stack stk1 = new Stack(10);   
    Stack stk2 = new Stack(10);   
    Stack stk3 = new Stack(10);   
    char ch;   
    int i;   
   
    // Put some characters into stk1. 
    Console.WriteLine("Push A through Z onto stk1."); 
    for(i=0; !stk1.full(); i++)   
      stk1.push((char) ('A' + i));   
  
    if(stk1.full()) Console.WriteLine("stk1 is full."); 
 
    // Display the contents of stk1. 
    Console.Write("Contents of stk1: ");   
    while( !stk1.empty() ) {    
      ch = stk1.pop();   
      Console.Write(ch);   
    }   
   
    Console.WriteLine();   
 
    if(stk1.empty()) Console.WriteLine("stk1 is empty.\n"); 
   
    // put more characters into stk1   
    Console.WriteLine("Again push A through Z onto stk1."); 
    for(i=0; !stk1.full(); i++)   
      stk1.push((char) ('A' + i));   
 
    /* Now, pop from stk1 and push the element in stk2. 
       this causes stk2 to hold the elements in  
       reverse order. */ 
    Console.WriteLine("Now, pop chars from stk1 and push " + 
                      "them onto stk2."); 
    while( !stk1.empty() ) {    
      ch = stk1.pop();   
      stk2.push(ch); 
    }   
 
    Console.Write("Contents of stk2: ");   
    while( !stk2.empty() ) {    
      ch = stk2.pop();   
      Console.Write(ch);   
    }   
 
    Console.WriteLine("\n"); 
 
    // put 5 characters into stack 
    Console.WriteLine("Put 5 characters on stk3."); 
    for(i=0; i < 5; i++)   
      stk3.push((char) ('A' + i));   
 
    Console.WriteLine("Capacity of stk3: " + stk3.capacity()); 
    Console.WriteLine("Number of objects in stk3: " + 
                      stk3.getNum()); 
    
  }   
}
           
         
    
  








Related examples in the same category

1.new Stack(new int[] { 1, 2, 3, 4, 5, 6 })
2.new Stack())
3.Implements the stack data type using an arrayImplements the stack data type using an array
4.Stack demo Stack demo
5.Stack to arrayStack to array
6.illustrates the use of a Stackillustrates the use of a Stack
7.Demonstrate the Stack classDemonstrate the Stack class
8.Stack(T) Class represents a variable size last-in-first-out (LIFO) collection of instances of the same arbitrary type.
9.Overflow Stack
10.Thread Safe Stack
11.A Stacked array is an integer array that contains a sequence of ascending integers.
12.FixedSizeStack provides an easy Stack implementation width a fixed size to prevent Stack Overflows in another sense.
13.Stack abstraction that also supports the IList interface