ูู ุงูู
ูุงู ุฏู ููุชููู
ุนู Stackุ ููู ูุงุญุฏ ู
ู ุงูู Non-Generic Collections ุงูู
ูู
ุฉ ูู C# ูุงููู ุจูู
ุซู ู
ุจุฏุฃ Last-In, First-Out (LIFO).
ุงูู Stack ู
ูุฌูุฏ ูู System.Collectionsุ ูุจูุณุชุฎุฏู
ู ูู
ุง ูููู ู
ุญุชุงุฌูู ููุตู ููุนูุงุตุฑ ุจููุณ ุงูุชุฑุชูุจ ุงูุนูุณู ุงููู ุฏุฎูุช ุจูู.
What is Stack and How Does it Work?
ุงูู Stack ูู collection ุจูุดุชุบู ุจู
ุจุฏุฃ LIFOุ ูุนูู โุขุฎุฑ ูุงุญุฏ ุฏุฎู ูู ุฃูู ูุงุญุฏ ูุฎุฑุฌโ.
ุฃุญุณู ู ุซุงู ุนุดุงู ูููู ุงูู ุจุฏุฃ ุฏู ูู ููู ุฉ ู ู ุงููุชุจ ุฃู ุงูุฃุทุจุงู ููู ุจุนุถ. ุขุฎุฑ ูุชุงุจ ุญุทูุชู ููู ูู ุฃูู ูุชุงุจ ูุชูุฏุฑ ุชุดูููุ ูู ุณุชุญูู ุชุดูู ูุชุงุจ ู ู ุงููุต.
ูู C#ุ ุงูู Stack ุจูุดุชุบู ุจููุณ ุงูุทุฑููุฉ. ุงูุนูุงุตุฑ ุจุชุชุญุท ููู ุจุนุถูุงุ ูุงูุนู
ููุงุช ุงูุฃุณุงุณูุฉ ูููุง ุฃุณู
ุงุก ุฎุงุตุฉ:
- ุงูู Push: ุฏู ุนู
ููุฉ ุฅุถุงูุฉ ุนูุตุฑ ุฌุฏูุฏ ููู ุงูู
Stack. - ุงูู Pop: ุฏู ุนู
ููุฉ ุฅุฒุงูุฉ ุงูุนูุตุฑ ุงููู ู
ูุฌูุฏ ูู ูู
ุฉ ุงูู
Stack.
ู
ูุญูุธุฉ: ููู ูุณุฎุชูู ู
ู Stack ูู C#ุ ูุงุญุฏุฉ Non-Generic ูู System.Collections (ุงููู ููุชููู
ุนููุง ููุง)ุ ููุงุญุฏุฉ Generic ู type-safe ุงุณู
ูุง Stack<T> ูู System.Collections.Generic.
Creating a Stack
ุฃูู ุญุงุฌุฉุ ูุงุฒู
ูุนู
ู using System.Collections;. ุจุนุฏูู ุจููุดุฆ instance ู
ู ุงูู Stack.
// Create an empty stack with default capacity
Stack stack = new Stack();ููู ุทุฑู ุชุงููุฉ ููุฅูุดุงุกุ ุฒู ุฅูู ุชุญุฏุฏ ุงูู capacity ุงูุฃูููุฉุ ุฃู ุชูุดุฆู ู
ู collection ุชุงููุฉ.
Adding Elements (Push)
ุนุดุงู ูุถูู ุนูุงุตุฑ ููู Stackุ ุจูุณุชุฎุฏู
ุงูู method ุงููู ุงุณู
ูุง Push(). ุงูู method ุฏู ุจุชุถูู ุงูุนูุตุฑ ูู ูู
ุฉ ุงูู Stack.
// Create a stack collection
Stack stack = new Stack();
// Add items to the stack using the Push() method
stack.Push(10);
stack.Push("Hello");
stack.Push(3.14f);
stack.Push(true);
stack.Push(67.8);
stack.Push('A');
// Printing the stack items using a foreach loop
// The loop starts from the top element (last one pushed)
foreach (object item in stack)
{
Console.WriteLine(item);
}ุงูู Stack ูู Non-Generic collection ุจููุจู ุฃู ููุน ุจูุงูุงุชุ ููู
ุงู ุจููุจู ููู
null ูููู
ู
ูุฑุฑุฉ.
Removing Elements
Pop() vs. Clear()
- ุงูู
Pop(): ุฏู ุงููmethodุงูุฃุณุงุณูุฉ ุงููู ุจุชุญุฐู ุงูุนูุตุฑ ุงููู ูู ูู ุฉ ุงููStackูุจุชุฑุฌุนูููู. ูู ุงููStackูุงุถู ูุญุงููุช ุชุนู ูPop()ุ ููุญุตูInvalidOperationException. - ุงูู
Clear(): ุจุชุญุฐู ูู ุงูุนูุงุตุฑ ุงููู ูู ุงููStackู ุฑุฉ ูุงุญุฏุฉ.
Console.WriteLine($"All Stack Elements: Count {stack.Count}");
foreach (var item in stack)
{
Console.Write($"{item} ");
}
// Remove and return an item from the stack using the Pop() method
Console.WriteLine($"\n\nDeleted Element: {stack.Pop()}");
Console.WriteLine($"\nAll Stack Elements After Deletion: Count {stack.Count}");
foreach (var item in stack)
{
Console.Write($"{item} ");
}Getting the Topmost Element
ุฅุฒุงู ุชุดูู ุงูุนูุตุฑ ุงููู ุนูู ุงููู
ุฉ ู
ู ุบูุฑ ู
ุง ุชุญุฐููุ ููุง ุจูุฌู ุงููุฑู ุจูู Pop() ู Peek().
Pop() vs. Peek()
- ุงูู
Pop(): ุจุชุญุฐู ุงูุนูุตุฑ ุงููู ุนูู ุงููู ุฉ ูุจุชุฑุฌุนู. - ุงูู
Peek(): ุจุชุฑุฌุน ุงูุนูุตุฑ ุงููู ุนูู ุงููู ุฉ ู ู ุบูุฑ ู ุง ุชุญุฐูู.
ูู ุงูู Stack ูุงุถูุ ุงูุงุชููู ุจูุฑู
ูุง InvalidOperationException.
Console.WriteLine($"Total elements present in stack: {stack.Count}"); // e.g., 6
// Using Pop()
Console.WriteLine($"Topmost element of stack is {stack.Pop()}"); // Returns 'A' and removes it
Console.WriteLine($"Total elements present in stack: {stack.Count}"); // Now 5
// Using Peek()
Console.WriteLine($"Topmost element of Stack is {stack.Peek()}"); // Returns 67.8 but doesn't remove it
Console.WriteLine($"Total elements present in stack: {stack.Count}"); // Still 5Checking for an Element
ุนุดุงู ุชุชุฃูุฏ ุฅุฐุง ูุงู ููู ุนูุตุฑ ู
ุนูู ู
ูุฌูุฏ ูู ุงูู Stack ุฃู ูุฃุ ุจูุณุชุฎุฏู
Contains(object).
if (stack.Contains("Hello"))
{
Console.WriteLine("Element 'Hello' is found");
}
else
{
Console.WriteLine("Element 'Hello' is not found");
}ู
ูุญูุธุฉ ุฃุฏุงุก: ุงูู Contains() ุจุชุงุฎุฏ ููุช O(n)ุ ูุนูู ุจุชูู ุนูู ูู ุงูุนูุงุตุฑ ุนุดุงู ุชูุงูู ุงูุนูุตุฑ ุงูู
ุทููุจุ ูู
ู
ูู ุชููู ุจุทูุฆุฉ ูู ุงูู Stack ูุจูุฑ ุฌุฏูุง.
Other Useful Methods and Properties
- ุงูู
Clone(): ุจุชุนู ู Shallow Copy ู ู ุงููStack. - ุงูู
CopyTo(array, index): ุจุชูุณุฎ ุนูุงุตุฑ ุงููStackููarrayุนุงุฏูุฉุ ุจููุณ ุงูุชุฑุชูุจ (ู ู ุงููู ุฉ ูููุงุนุฏุฉ).
Properties
- ุงูู
Count: ุจุชุฑุฌุน ุนุฏุฏ ุงูุนูุงุตุฑ ุงูุญุงููุฉ ูู ุงููStack. - ุงูู
IsSynchronized: ุจุชุนุฑูู ุฅุฐุง ูุงู ุงููStackุฏูthread-safe. - ุงูู
SyncRoot: ุจุชุฑุฌุนobjectู ู ูู ูุณุชุฎุฏู ู ุนุดุงู ูุนู ูsynchronizationูุฏูู.
When to Use Stack in Real-Time Applications?
ุงูู Stack ู
ููุฏ ุฌุฏูุง ูู ุณููุงุฑูููุงุช ูุชูุฑ ุฒู:
- ุงูู Undo/Redo Functionality: ูู ุจุฑุงู
ุฌ ุงูุชุนุฏููุ ูู ุนู
ููุฉ ุจุชุนู
ููุง ุจุชุชุญุท ูู
stackุงููUndo. ูู ุง ุจุชุฏูุณUndoุ ุจูุนู ูPop()ูุขุฎุฑ ุนู ููุฉ. - ุงูู Back Button in Browsers: ูู ุตูุญุฉ ุจุชุฒูุฑูุง ุจุชุชุญุท ูู
stack. ูู ุง ุจุชุฏูุณBackุ ุจูุนู ูPop()ูุขุฎุฑ ุตูุญุฉ. - ุงูู Function Call Stack: ูุบุงุช ุงูุจุฑู
ุฌุฉ ููุณูุง ุจุชุณุชุฎุฏู
stackุนุดุงู ุชุฏูุฑ ุงุณุชุฏุนุงุก ุงููfunctions. - ุงูู Expression Evaluation: ูู ุชุญููู ุฃู ุญุณุงุจ ุงูุชุนุจูุฑุงุช ุงูุฑูุงุถูุฉ (like Infix to Postfix).
ูุตูุญุฉ: ุฒู ุจุงูู ุงูู Non-Generic Collectionsุ ูููุถู ุงุณุชุฎุฏุงู
ุงููุณุฎุฉ ุงูู Generic ููู Stack<T> ูู ุงูุฃููุงุฏ ุงูุญุฏูุซุฉ ุนุดุงู ุชุณุชููุฏ ู
ู ุงูู type safety ูุงูุฃุฏุงุก ุงูุฃูุถู.