সবার মঙ্গল কামনা করে আজকের পাইথন এর পর্ব শুরু করছি । আজকে আমি পাইথনের কিছু হালকা পাতলা ডাটা স্ট্রাকচার নিয়ে আলোচনা করব । তো , আসুন শুরু করা যাক । আমাদের আজকের প্রথম বিষয় হল “Stacks” । এটা হল আপনাদের বই রাখার তাক এর মত । আপনি যে বই টা সর্ব প্রথম তাকে রাখেন , সেটা ন্তিু অনেক নীচে চলে যায় । আর সবথেকে শেষে যে বইটা রাখেন , সেই টা সবার উপরে থাকে । ফলে আপনি যদি একটা বই তুলতে চান , তাহলে সবথেকে শেষে রাখা বইটা আগে তুলতে হবে ।
তো, স্টাক হল একটা লিস্ট । যেখানে আপনি যে ভ্যালুটা সবার আগে রাখবেন সেটা সবার শেষে রিটার্ণ করবে । আর সবার শেষে যেটা রাখবেন , সেটা সবার আগে রিটার্ণ করবে । তো , আসুন আমরা স্টাক এর একটা অ্যালগরিদম দেখি ।
আসলে ব্যাবহার না জানলে কোন জিনিস শিখে মজা পাওয়া যায় না । তাই আগে এই গুলোর ব্যাহারটা একটু বলি । ধরুন , আপনি একটা ওয়েবসাইট এ ব্রাউজ করছেন । এবার আপনি অনেক পেজ ঘুরতে ঘুরতে গিয়ে দেখরেন যে , আপনার একটু কয়েক পেজ আগে আশা দরকার । তো , আপনি নিশ্চই ব্রাউজারের ব্যাক বাটনটা চাপ দিবেন । ব্যাস । এটা আপনাকে আপনার ব্রাউজ করা সর্বশেষ পেজটা ভিউ করবে । এভাবে চাপতে থাকলে তার আগে যেটা ভিজিট করেছেন সেটা , তারপর তার আগেরটা এভাবে চলবে , এবং সবথেকে শেষে আপনি আপনার প্রথম ভিজিটেড পেজটা খুজে পাবেন । এটা মূলত স্ট্রাক এর নীতিতে কাজ করে । এরকম আরও বহু উদাহরণ আছে যেগুলো নেটে সাচর্ দিলেই পেয়ে যাবেন ।
class Stack(list): def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, items): self.items.append(items) def pop(self): if not self.isEmpty(): return self.items.pop() else: raise Exception('Stack is empty!') def peek(self): return self.items[-1] def size(self): return len(self.items) def main(): stack = Stack() stack.push(1) stack.push(2) stack.push(3) stack.push(12) print(stack.size()) print(stack.peek()) print(stack.pop()) print(stack.peek()) if __name__ == '__main__': main() <
এই প্রোগ্রামটা রান করে দেখুন । এখানে কয়েকটি ফাংশন ডিফাইন করে কাজ করা হয়েছে । পুশ টা হল স্টাক এ ডাটা পুশ করার বা প্রবেশ করানোর জন্য । আর পপ টা হল স্টাক থেকে ডাটা তোলার জন্য । পিক এর কাজও একই । এবার আাপনি ইনপুট দিয়ে চেক করুন , আপনি যে ভ্যালুটা সবার শেষে পুশ করেছিলেন সেটা সবার আগে পপ করবে । এভাবে পর পর সিরিয়ালি পপ করতে থাকবে । আর সবার শেসে পপ করবে সবার প্রথমে যে ভ্যালু রেখেছিলেন ।
এবার আমরা আরেকটা ডাটা স্ট্রাকচার জনব যার নাম হল “QUEUES” । এটা হল স্টাক এর টিক উল্টো । এখানে আপনি প্রথমে যে ভ্যালু রাখবেন , পপ করার সময় সেই ভ্যালুই প্রথমে পপ করবে । আর শেষে যে ভ্যালু রাখবেন সেটা শেষে পপ করবে এবং এইভাবে সিরিয়ালি চলতে থাকবে । আসুন , এই অ্যলগরিদমটা দেখে নিই ।
class Queue(object): def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def enqueue(self, item): self.items.insert(0, item) def dequeue(self): return self.items.pop() def size(self): return len(self.items) def peek(self): if not self.isEmpty(): return self.items[-1] else: raise Exception('Queue is empty.') def size(self): return len(self.items) def main(): queue = Queue() queue.enqueue(1) queue.enqueue(2) queue.enqueue(3) queue.enqueue(5) queue.enqueue(6) print(queue.size()) print(queue.peek()) print(queue.dequeue()) print(queue.peek()) if __name__ == '__main__': main()
দেখুন , আগের টার সাথে এটার অনেক মিল আছে । তবে আগেরটাতে ভ্যালু একটা লিস্টে র্যানডমলি এপেন্ড করা হয়েছিল , আর এখানে ভ্যালু সবসময় ০ পজিশনে ইনসার্ট করা হয়েছে । তারপর এর সাইজ , পপ , প্রভৃতির জন্য একেকটা ফাংশন লেখা হয়েছে । এভাবে আপনারা বিভিন্ন ভ্যালু ইনপুট দিয়ে এটা ট্রাই করতে থাকুন । ফলে আইডিয়া ক্লিয়ার হবে ।
এবার আমরা যেটা দেখব সেটা হল “DEQUES” । এটা হল আগরে ২ টার একটা কম্বো । আগের ২ টার কাজ এই একটা দিয়েই করা যায় । অর্থাৎ , আপনি চাইলে প্রথমে বা শেষে ভ্যালু ইনসার্ট করতে পারবেন , আবার প্রথম বা শেষ থেকে ভ্যালু পপ ও করতে পারবেন । আসুন , এর কোডটা দেখি :
class Deque(object): def __init__(self): self.items = [] def isEmpty(self): return self.items == [] #স্বাভাবিক নিয়মে ভ্যালু লিস্টে পুশ করবে def addFront(self, item): self.items.append(item) #সবসময় ভ্যালু ০ পজিশনে পুশ করবে def addRear(self, item): self.items.insert(0, item) #স্বাভাবিক নিয়মে ভ্যালু পপ করবে def removeFront(self): return self.items.pop() #সবসময় ০ পজিশন থেকে ভ্যালু পপ করবে । def removeRear(self): return self.items.pop(0) def size(self): return len(self.items) def __repr__(self): return '{}'.format(self.items) def main(): dq = Deque() dq.addFront(1) dq.addFront(2) dq.addFront(3) dq.addRear(40) dq.addRear(50) print(dq.size()) print(dq) if __name__ == '__main__': main()
আশা করি বিষয়টা আপনারা বুঝতে পেরেছেন । না বুঝলে কমেন্ট করুন ।
পরের পর্বে আরও কিছূ ডাটা স্ট্রাকচার নিয়ে লিখব । আর পাইথনের যেকোন সমস্যার সমাধান পেতে আমাদের পাইখন বাংলাগ্রুপে জয়েন করুন ।
buy lipitor 20mg online cheap buy lipitor 20mg online order generic atorvastatin 20mg
cheap lipitor 40mg cost lipitor 10mg order atorvastatin 20mg generic
how to get glycomet without a prescription – cipro 1000mg pill generic lincocin 500mg
metformin 1000mg us – ciprofloxacin 1000mg cheap buy generic lincomycin over the counter
order zidovudine online pill – glycomet cheap zyloprim 100mg ca
cost clozaril – buy clozaril pepcid 40mg us
clozaril 50mg usa – perindopril 8mg uk buy famotidine cheap
seroquel 100mg pill – venlafaxine 75mg canada eskalith brand
quetiapine 50mg price – purchase seroquel sale buy eskalith online cheap
order clomipramine 25mg without prescription – how to buy tofranil buy sinequan 25mg online cheap
anafranil tablet – order duloxetine 40mg online cheap buy doxepin pills
atarax cheap – buspar 5mg generic amitriptyline buy online
atarax us – buy endep generic buy amitriptyline without prescription
amoxiclav price – order zyvox for sale purchase baycip generic
buy augmentin – amoxiclav online order purchase baycip generic
amoxicillin ca – amoxil online buy order baycip for sale
amoxicillin usa – how to get keflex without a prescription baycip price
order cleocin for sale – buy cheap cefixime buy chloromycetin pill
zithromax 500mg usa – ciplox 500mg cost order ciplox 500mg sale
cleocin 300mg cost – chloromycetin uk chloromycetin brand