Sunday 3 May 2015

How to use Stack in c# .Net ?

Stack is used when you need a last-in, first-out access of items. When you add an item in the list, it is called pushing the item and when you remove it, it is called popping the item.

The Stack class represents a last-in-first-out (LIFO) Stack of Objects. Stack follows the push-pop operations. That is we can Push (insert) Items into Stack and Pop (retrieve) it back . Stack is implemented as a circular buffer. It follows the Last In First Out (LIFO) system. That is we can push the items into a stack and get it in reverse order. Stack returns the last item first. As elements are added to a Stack, the capacity is automatically increased as required through reallocation.

Methos of Stack:-












Property of Stack:-





Source Code:-

using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleAppDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            stackOperations classObj = new stackOperations();
            while (true)
            {
               // Console.Clear();
                Console.WriteLine("\n");
                Console.WriteLine("1. Add an element");
                Console.WriteLine("2. See the Top element.");
                Console.WriteLine("3. Remove top element.");
                Console.WriteLine("4. Display stack elements.");
                Console.WriteLine("5. Exit");
                Console.Write("Select your choice: ");
                int choice = Convert.ToInt32(Console.ReadLine());
                switch (choice)
                {
                    case 1:
                        classObj.Push();
                        break;

                    case 2: classObj.Peek();
                        break;

                    case 3:  classObj.Pop();
                        break;
                    case 4: classObj.Display();
                        break;

                    case 5: System.Environment.Exit(1);
                        break;
                }
                Console.ReadKey();
            }
        }
    }

  
    class stackOperations
    {  
        string item;
        Stack stObj = new Stack();
       
        public bool isEmpty()
        {
            if (stObj.Count == 0) return true;

            return false;
        }

        public void Push()
        { 
           Console.Write("\nEnter a Item\n");
           item = Console.ReadLine();
           stObj.Push(item);
           Console.WriteLine("\nItem pushed successfully!");
           
        }

        public void Pop()
        {
            if (isEmpty())
            {
                Console.WriteLine("Stack is empty!");
            }
            else
            {
                stObj.Pop();
                Console.WriteLine("Removed Successfuly"); 
            }
        }
        public void Peek()
        {
            if (isEmpty())
            {
              Console.WriteLine("Stack is empty!");  
            }
            else
            {
                Console.Write("Top Item is: {0}", stObj.Peek());  
            }
         }

        public void Display()
        {
            if (isEmpty())
            {
                Console.WriteLine("Stack is empty!");
            }
            else
            {
                Console.Write("\nItems in Stack are: \n");
                foreach (string item in stObj)
                {
                    Console.Write(item);
                    Console.Write("\n");
                }
            }
        }

    }
}


Output:-








































How to use C# HashTable Class ?

You already have a System.Collections.Generic namespace, but a Hastable is not part of this collection - it's part of the normal Collections namespace.

Hashtable in C# represents a collection of key/value pairs which maps keys to value. Any non-null object can be used as a key but a value can. We can retrieve items from hashTable to provide the key . Both keys and values are Objects.

// Creating an object of HashTable
  Hashtable ht = new  Hashtable();


Operation on HashTable


   1.   Add:   Its use to add a pair of value in HashTable
      Syntex-         ht.Add(keyObj, valueObj)
      Example-      ht.Add(1, Monday)

   2.  ContainsKey:   Check if a specified key exist or not and retruns boolean value
          Syntex-             ht.ContainsKey(keyObj)
          Example-          bool  IsExist  =    ht.ContainsKey(1))
      Return value-  True

  3.  ContainsValue:   Check if a specified Value exist or not and retruns boolean value
          Syntex-             ht.ContainsValue(valueObj)
          Example-          bool  IsExist  =    ht.ContainsValue(Monday))
      Return value-  True
  
   4.  Remove:  Remove the specified Key and corresponding Value if exist
          Syntex -       ht.Remove(keyObj);
          Example-     ht.Remove(1);

 Source Code Example:-

         In below example I explained each above operation 


using System;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Collections;

Namespace ConsoleDemoApp
{
    Class Test
    {
        /* program to implement Dictionay in c# */

        public static void Main(string[] args)
        {
            int inputNum=0;

          
            Console.Write("\nEnter number of day in a Week: ");
            inputNum= int.Parse(Console.ReadLine());

            HashTableExample ht = new HashTableExample();
            ht.HT_Operations(inputNum);
            Console.ReadKey();
        }
    }

  
  

    //
    Public class HashTableExample
    {
        Public void HT_Operations(int inputNum)
        {
            string dayName;
           
           Hashtable WeekDays = new  Hashtable();
           for(int i=0; i<inputNum; i++)
            {
                Console.Write("\nEnter {0} day of Week: ", i+1);
                dayName = Console.ReadLine();
                 WeekDays.Add(i,dayName);
                 Console.Write("\n");
            }

            // print all
            Console.Write("\nEntered Days are: \n");
            foreach(DictionaryEntry day in WeekDays)
            {
               Console.Write(day.Value);
               Console.Write("\n");
            }

            //print a single day 
            Console.Write(WeekDays[3].ToString());
            Console.Write("\n");


            //Search an Item by value
            Console.Write("\nEntered a Days for search: \n");
            dayName = Console.ReadLine();
            if (WeekDays.ContainsValue(dayName))
            {
                Console.Write("\n {0} is Found in the Dictionay: \n", dayName);
            }
            else
            {
                Console.Write("Not Found!");
            }


            //Search an Item by key
            Console.Write("\nEntered a key for search: \n");
           int key = int.Parse(Console.ReadLine());
           if (WeekDays.ContainsKey(key))
            {
                Console.Write("\nFor entered key {0} the day name is: {1} \n", key, WeekDays[key].ToString());
            }
            else
            {
                Console.Write("Not Found!");
            }

           //now remove an Item using key
            Console.Write("\nEntered a key to remove a Day: \n");
            key = int.Parse(Console.ReadLine());
            if (WeekDays.ContainsKey(key))
            {
                Console.Write("\nThe Day {0} has been removed: \n", WeekDays[key].ToString());
                WeekDays.Remove(key);
            }
            else
            {
                Console.Write("No Day exits at key:  {0}", key);
            }


            // print the remaining days
            Console.Write("\nRemaing Days are: \n");
            foreach(DictionaryEntry day in WeekDays)
            {
                Console.Write(day.Key + " - " + day.Value);
                Console.Write("\n");
            }
        }
    }
}


In above program I entered number of day in week is 7. After it will ask enter all day one by one 
and after that it will print instructions and ask relevant key/value to enter

Output:-