কম্পিউটার টিউটোরিয়াল

C#-এ Stack রিভার্স করা (দুটি Stack ব্যবহার করে)

একটি Stack<T> রিভার্স করতে দ্বিতীয় একটি স্ট্যাক ব্যবহার করে সব এলিমেন্ট Pop করে Push করা হয়। এটি O(n) সময় ও O(n) অতিরিক্ত স্পেস নেয়।

এলগরিদম

  1. মূল স্ট্যাক থেকে এলিমেন্ট Pop করুন।
  2. নতুন স্টাকে Push করুন।
  3. মূল স্ট্যাক খালি হয়ে যাওয়া পর্যন্ত চলতে দিন।
  4. নতুন স্ট্যাকটি রিভার্সড অর্ডার ধারণ করবে।

সম্পূর্ণ উদাহরণ

using System;
using System.Collections.Generic;

class StackReverseDemo
{
    public static void Main()
    {
        Stack<char> st = new Stack<char>();
        st.Push('P');
        st.Push('Q');
        st.Push('R');
        
        Console.WriteLine("মূল স্ট্যাক (টপ থেকে বটম):");
        foreach (char c in st) Console.Write(c + " "); // R Q P
        
        Stack<char> rev = new Stack<char>();
        while (st.Count > 0)
        {
            rev.Push(st.Pop());
        }
        
        Console.WriteLine("\n\nরিভার্সড স্ট্যাক (টপ থেকে বটম):");
        foreach (char c in rev) Console.Write(c + " "); // P Q R
    }
}

আউটপুট

মূল স্ট্যাক (টপ থেকে বটম):
R Q P

রিভার্সড স্ট্যাক (টপ থেকে বটম):
P Q R

বিকল্প পদ্ধতি (LINQ)


var reversed = new Stack<T>(originalStack.Reverse());

Stack<T> কনস্ট্রাক্টর `IEnumerable<T>` নেয়, তাই LINQ `Reverse()` সরাসরি ব্যবহার করা যায়।

জেনেরিক মেথড


public static Stack<T> Reverse<T>(Stack<T> source)
{
    return new Stack<T>(source);
}
// ব্যবহার: var rev = Reverse(st);
  1. C++ কিউ ব্যবহার করে BST-এ একটি পথ রিভার্স করুন

  2. স্ট্যাক ব্যবহার করে স্ট্রিং রিভার্স করার জাভা প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: রিকার্শন ব্যবহার করে স্ট্যাক রিভার্স করা

  4. পাইথন প্রোগ্রাম: রিকার্শন ব্যবহার করে স্ট্রিং রিভার্স করা