Implement Stack In Python Using List | Learn in Easy Bengali 2024

কম্পিউটার সাইন্স/এপ্লিকেশনে এ stack হল ভীষণ গুরুত্বপূর্ণ একটি ডেটা স্ট্রাকচার। আজকে আমরা এই পোস্টে আলোচনা করব একটি stack (Stack In Python) কিভাবে তৈরি করব , stack এর বিভিন্ন অপারেশন‌ এবং stack এর ব্যবহার।

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 হয় না।

Also Read :- What is String in Python | Learn in Easy Bengali 2024

stack-example-in-python-in-easy-bengali-techinbengali.com
Stack In Python
  1. Expression Evaluation
  2. Parenthesis Matching
  3. Expression Conversion ( prefix , infix এবং postfix )
  4. Memory Management

stack এর বেসিক অপারেশন গুলি আমরা নীচে আলোচনা করেছি।

  1. Push – stack এ একটি এলিমেন্টকে insert করা।
  2. Pop – stack থেকে একটি এলিমেন্টকে delete করা।
  3. Peek – stack এর সবার উপরের এলিমেন্টকে দেখানো।
  4. Isempty – এটি ব্যবহৃত হয় stack টি খালি( empty ) কিনা চেক করার জন্য।
  5. Isfull – এটি ব্যবহৃত হয় stack টি ভর্তি( full ) কিনা চেক করার জন্য।
stack-representation-in-python-in-easy-bengali-techinbengali.com
Stack In Python

Also Read :- What is Dictionary in Python | Learn in Easy Bengali 2024

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-using-list-in-python-in-easy-bengali-techinbengali.com
Stack In Python

এখন আমরা দেখব , আমরা কিভাবে উপরের অপারেশন গুলির জন্য পাইথনে ফাংশন লিখব এবং সর্বশেষে , তৈরি করা ফাংশন গুলিকে ব্যবহার করে কিভাবে একটি ক্লাস(class) তৈরী করব।
সবার আগে আমরা mystack নামে একটা লিস্ট তৈরি করব , তবে class এর মধ্যে আমাদের “init_()” মেথডেই লিস্টটিকে তৈরী করতে হবে।

Create a list

class ব্যবহার না করে।

mystack=[]
Python

class ব্যবহার করে।

class stack:
    def __init__(self):
        self.mystack=[]        
Python

Push ( ) operation


stack এ এলিমেন্ট insert করতে Push ( ) মেথড ব্যাবহার করা হয়।
যেহেতু আমরা একটি এলিমেন্ট insert করব সেই জন্য ফাংশনে আমরা element নামক একটি প্যারামিটার নেব। এবং element টিকে লিস্টে append করব।

def push(element):
        mystack.append(element)
Python

Pop ( ) operation


stack থেকে এলিমেন্ট delete করতে pop ( ) মেথড ব্যাবহার করা হয়।
আমরা element টিকে লিস্ট থেকে ডিলিট করার জন্য pop () মেথড ব্যবহার করব এবং return স্টেটমেন্ট ব্যবহার করে এলিমেন্ট টিকে রিটার্ন করব।

def pop():
        return mystack.pop()
Python

Peek ( ) operation


একটি stack এর সবার উপরের এলিমেন্টকে দেখানোর জন্যে peek ( ) মেথড ব্যাবহার করা হয়।
আমরা লিস্টের negative index ব্যাবহার থেকে সর্বশেষ এলিমেন্ট টিকে রিটার্ন করব, return স্টেটমেন্ট ব্যবহার করে ।

def peek():
        return mystack[-1]
Python

isempty ( ) method

এই মেথডটি ব্যবহৃত হয় stack টি খালি কিনা চেক করার জন্য।
একটি লিস্ট খালি কিনা এটি আমরা পাইথনে দুভাবে চেক করতে পারি। প্রথমত list টির সাইজ যদি 0 হয় তাহলে list টি খালি। অথবা যদি list টি একটি empty লিস্ট ( [ ] )এর সমান হয়।
ওপরের দুটি মেথডের মধ্যে যেকোনো একটি মেথড ব্যবহার করে True রিটার্ন করব যদি list টি খালি হয় অন্যথায় False রিটার্ন করব।

def isempty():
        return mystack == []
Python

অথবা

def isempty():
        return len(mystack)==0
Python

isfull ( ) 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.")
Python

Output

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

এই পোস্টটি পড়ে আপনাদের মূলবান মতামত জানাতে আমাদের কমেন্ট করুন। আপনাদের কোনো প্রশ্ন থাকলে নির্দ্ধিধায় জিজ্ঞেসা করুন। আমরা চেষ্টা করবো যতো দ্রুত সম্ভব উত্তর দেবার।

Leave a Comment

iQOO Neo9 Pro 5G শীঘ্রই ভারতে আসতে চলেছে realme GT 5 Pro, সাথে রয়েছে দুর্দান্ত ফিচারস Infinix NOTE 40 pro 5G launched in India with best features ১৫০০০ এর নিচে এটিই সবার সেরা বাজেট স্মার্ট ফোন , Redmi Note 12 5g ভারতে খুব তারাতারি লঞ্চ হতে চলেছে ২০,০০০ এর নিচে Vivo T3x 5G স্মার্ট ফোনটি , এক ঝলকে দেখে নিন কি কি থাকছে ?
iQOO Neo9 Pro 5G শীঘ্রই ভারতে আসতে চলেছে realme GT 5 Pro, সাথে রয়েছে দুর্দান্ত ফিচারস Infinix NOTE 40 pro 5G launched in India with best features ১৫০০০ এর নিচে এটিই সবার সেরা বাজেট স্মার্ট ফোন , Redmi Note 12 5g ভারতে খুব তারাতারি লঞ্চ হতে চলেছে ২০,০০০ এর নিচে Vivo T3x 5G স্মার্ট ফোনটি , এক ঝলকে দেখে নিন কি কি থাকছে ?