কম্পিউটার সাইন্স/এপ্লিকেশনে এ stack হল ভীষণ গুরুত্বপূর্ণ একটি ডেটা স্ট্রাকচার। আজকে আমরা এই পোস্টে আলোচনা করব একটি stack (Stack In Python) কিভাবে তৈরি করব , stack এর বিভিন্ন অপারেশন এবং stack এর ব্যবহার।
Table of Contents
Definitions of Stack In Python
stack হলো একটি linear ডেটা স্ট্রাকচার কারণ stack এ এলিমেন্ট গুলি একটি নির্দিষ্ট sequence গঠন করে।
stack একটি dynamic বা non-static ডেটা স্ট্রাকচার কারণ stack এ কতগুলি এলিমেন্ট থাকবে সেটা আগে থেকেই fixed না করে আমরা আমাদের প্রয়োজনমতো এলিমেন্ট কে insert অথবা delete করতে পারি।
যদিও আমরা কোন ডেটা স্ট্রাকচার ব্যবহার করে stack টি তৈরি করব সেটার উপরে depend করে stack টি dynamic বা non-static কিনা। যদি আমরা array ব্যবহার করে stack তৈরি করি তাহলে stack টি static ডেটা স্ট্রাকচার কারণ array এর সাইজ fixed। কিন্তু যদি আমরা list ব্যবহার করে stack তৈরি করি তাহলে stack টি non-static ডেটা স্ট্রাকচার কারণ পাইথনে list এর সাইজ fixed হয় না।
যেহেতু stack এ এলিমেন্ট insertion এবং deletion অপারেশন সবসময় stack র শেষেই হয় সেই কারণে stack লাস্ট ইন ফার্স্ট আউট(Last In First Out) বা LIFO অর্ডার ফলো করে।
Also Read :- What is String in Python | Learn in Easy Bengali 2024
Example of Stack In Python
Application of Stack In Python
- Expression Evaluation
- Parenthesis Matching
- Expression Conversion ( prefix , infix এবং postfix )
- Memory Management
Operations associated with Stack In Python
stack এর বেসিক অপারেশন গুলি আমরা নীচে আলোচনা করেছি।
- Push – stack এ একটি এলিমেন্টকে insert করা।
- Pop – stack থেকে একটি এলিমেন্টকে delete করা।
- Peek – stack এর সবার উপরের এলিমেন্টকে দেখানো।
- Isempty – এটি ব্যবহৃত হয় stack টি খালি( empty ) কিনা চেক করার জন্য।
- Isfull – এটি ব্যবহৃত হয় stack টি ভর্তি( full ) কিনা চেক করার জন্য।
Also Read :- What is Dictionary in Python | Learn in Easy Bengali 2024
Two Important Situations On Stack In Python
Stack Overflow
যখন আমরা কোন এলিমেন্টকে stack এ push করব তখন আমাদের অবশ্যই চেক করা প্রয়োজন stack টি ভর্তি(full ) কিনা। যদি stack টি সম্পূর্ণরূপে ভর্তি হয়, তখন আমরা নতুন কোন এলিমেন্টকে stack এ push করতে পারব না। এই সিচুয়েশনটিকেই বলা হয় Stack Overflow।
তবে এটি fixed সাইজ stack এর ক্ষেত্রেই প্রযোজ্য।
Stack Underflow
যখন আমরা কোন এলিমেন্টকে stack থেকে peek বা pop করব তখন আমাদের অবশ্যই চেক করা প্রয়োজন stack টি খালি(empty ) কিনা। যদি stack টি সম্পূর্ণরূপে খালি(empty ) হয়, তখন আমরা কোন এলিমেন্টকে stack থেকে peek বা pop করতে পারব না। এই খালি(empty ) সিচুয়েশনটিকেই বলা হয় Stack Underflow।
Stack representation using list In Python
এখন আমরা দেখব , আমরা কিভাবে উপরের অপারেশন গুলির জন্য পাইথনে ফাংশন লিখব এবং সর্বশেষে , তৈরি করা ফাংশন গুলিকে ব্যবহার করে কিভাবে একটি ক্লাস(class) তৈরী করব।
সবার আগে আমরা mystack নামে একটা লিস্ট তৈরি করব , তবে class এর মধ্যে আমাদের “init_()” মেথডেই লিস্টটিকে তৈরী করতে হবে।
Create a list
class ব্যবহার না করে।
mystack=[]
Pythonclass ব্যবহার করে।
class stack:
def __init__(self):
self.mystack=[]
PythonPush ( ) operation
stack এ এলিমেন্ট insert করতে Push ( ) মেথড ব্যাবহার করা হয়।
যেহেতু আমরা একটি এলিমেন্ট insert করব সেই জন্য ফাংশনে আমরা element নামক একটি প্যারামিটার নেব। এবং element টিকে লিস্টে append করব।
def push(element):
mystack.append(element)
PythonPop ( ) operation
stack থেকে এলিমেন্ট delete করতে pop ( ) মেথড ব্যাবহার করা হয়।
আমরা element টিকে লিস্ট থেকে ডিলিট করার জন্য pop () মেথড ব্যবহার করব এবং return স্টেটমেন্ট ব্যবহার করে এলিমেন্ট টিকে রিটার্ন করব।
def pop():
return mystack.pop()
PythonPeek ( ) operation
একটি stack এর সবার উপরের এলিমেন্টকে দেখানোর জন্যে peek ( ) মেথড ব্যাবহার করা হয়।
আমরা লিস্টের negative index ব্যাবহার থেকে সর্বশেষ এলিমেন্ট টিকে রিটার্ন করব, return স্টেটমেন্ট ব্যবহার করে ।
def peek():
return mystack[-1]
Pythonisempty ( ) method
এই মেথডটি ব্যবহৃত হয় stack টি খালি কিনা চেক করার জন্য।
একটি লিস্ট খালি কিনা এটি আমরা পাইথনে দুভাবে চেক করতে পারি। প্রথমত list টির সাইজ যদি 0 হয় তাহলে list টি খালি। অথবা যদি list টি একটি empty লিস্ট ( [ ] )এর সমান হয়।
ওপরের দুটি মেথডের মধ্যে যেকোনো একটি মেথড ব্যবহার করে True রিটার্ন করব যদি list টি খালি হয় অন্যথায় False রিটার্ন করব।
def isempty():
return mystack == []
Pythonঅথবা
def isempty():
return len(mystack)==0
Pythonisfull ( ) method
এই মেথডটি ব্যবহৃত হয় stack টি ভর্তি কিনা চেক করার জন্য।
যেহেতু পাইথনে লিস্টের কোন fixed সাইজ হয় না সেই কারণেই এই isfull () ফাংশনটির আমাদের প্রয়োজন নেই।
implement a stack using class
এখন আমরা দেখব কিভাবে stack নামের একটি class তৈরি করে ওপরের ফাংশন গুলির কিছু syntax পরিবর্তন করে আমরা একটি stack তৈরি করতে পারি।
প্রথমে আমরা ,আমাদের কম্পিউটারে data structure বা অন্য যে কোনো নামে একটা ফোল্ডার তৈরি করব। সেই ফোল্ডারে stack.py নামে একটা পাইথন ফাইল তৈরি করব।
এরপর সেখানে আমরা নিম্নলিখিত কোডটিকে paste করব।
class stack:
def __init__(self): # here __init__() is a special method called constructor.
self.mystack=[] # create an empty list called mystack
# here, self is a keyword refers to the instance of the class
def push(self,element): # push method
self.mystack.append(element)
def pop(self): # pop method
return self.mystack.pop()
def peek(self): # peek method
return self.mystack[-1]
def is_empty(self): # isempty method
return self.mystack==[]
def display(self): # display method
length=len(self.mystack)-1
print()
for i in range(length,-1,-1):
print(' |',format(self.mystack[i],'>3'),'|')
print(' -------')
Pythonএখানে আমরা display নামক একটি অতিরিক্ত মেথড ব্যবহার করেছি যেটির কাজ হল stack এর এলিমেন্ট গুলিকে ডিসপ্লে করানো।
এবার আমরা আমাদের বানানো stack.py মডিউলটিকে আমাদের অন্য আরেকটি ফাইলে import করব। এবং একটি menu-driven প্রোগ্রাম লিখে stack এর ব্যাবহার দেখব।
# syntax of import statement: from file_name import function / class / variable
from st import stack
my_stack =stack() # create a object of stack class
while True:
print("\n1. Push")
print("2. Pop")
print("3. Peek")
print("4. Display")
print("5. Exit")
choice = int(input("Enter your choice: "))
match choice:
case 1:
element = input("Enter element to push: ")
my_stack.push(element)
case 2:
if my_stack.is_empty():
print("Stack Underflow")
else:
popped = my_stack.pop()
print("Popped element:", popped)
case 3:
if my_stack.is_empty():
print("Stack Underflow")
else:
top_element = my_stack.peek()
print("Top element:", top_element)
case 4:
my_stack.display()
case 5:
print("Exiting the program...")
exit()
case _:
print("Invalid choice. Please enter a valid option.")
PythonOutput
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Enter your choice: 1
Enter element to push: 6
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Enter your choice: 1
Enter element to push: 5
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Enter your choice: 4
| 5 |
-------
| 6 |
-------
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Enter your choice: 3
Top element: 5
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Enter your choice: 2
Popped element: 5
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Enter your choice: 2
Popped element: 6
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Enter your choice: 2
Stack Underflow
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Enter your choice: 3
Stack Underflow
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Enter your choice: 5
Exiting the program...
Also Read :- What is Set in Python | Learn in Easy Bengali 2024
এই পোস্টটি পড়ে আপনাদের মূলবান মতামত জানাতে আমাদের কমেন্ট করুন। আপনাদের কোনো প্রশ্ন থাকলে নির্দ্ধিধায় জিজ্ঞেসা করুন। আমরা চেষ্টা করবো যতো দ্রুত সম্ভব উত্তর দেবার।
take online classes