একটি সারি হল একটি রৈখিক ডেটা কাঠামো যা ফার্স্ট ইন ফার্স্ট আউট এ কাজ করে মেকানিজম(FIFO)।
যে উপাদানটি সারিতে প্রথমে প্রবেশ করে সেটিই প্রথম প্রক্রিয়া করা হয়।
উদাহরণ
একটি বাস স্ট্যান্ডে একটি সারির সাহায্যে সারি ডেটা কাঠামো বোঝা যায়। যে ব্যক্তি বাসস্ট্যান্ডে প্রথমে পৌঁছায় সে সারিতে থাকা প্রথম ব্যক্তি এবং অন্যান্য ব্যক্তিরা বাসস্ট্যান্ডে পৌঁছানোর সাথে সাথে তাকে দাঁড় করিয়ে দেয়। যখন বাস আসবে, যে ব্যক্তি বাসস্ট্যান্ডে প্রথমে পৌঁছেছে সে বাসে প্রথম প্রবেশ করবে এবং বাকিরা যে ক্রমে বাসস্ট্যান্ডে পৌঁছেছে সেই ক্রমে প্রবেশ করবে। এইভাবে, FIRST IN FIRST OUT মেকানিজম অনুসরণ করা হয়।
পাইথনে সারির বাস্তবায়ন
পাইথনে সারিটি অন্যান্য লিনিয়ার ডেটা স্ট্রাকচার বা পাইথন লাইব্রেরিতে অন্তর্নির্মিত মডিউল ব্যবহার করে বিভিন্ন উপায়ে প্রয়োগ করা যেতে পারে।
পদ্ধতি 1 - তালিকা ব্যবহার করে প্রয়োগ করুন
পাইথনের সারি তালিকা ব্যবহার করে প্রয়োগ করা যেতে পারে। এটি খুব কার্যকর নয় কারণ তালিকার শুরুতে একটি উপাদান সন্নিবেশ করা বা মুছে ফেলার জন্য O(n) সময় লাগে যা অন্যান্য উপায় ব্যবহার করে বাস্তবায়নের তুলনায় ধীর।
অপারেশন জড়িত
সংযোজন() − এই ফাংশনটি সারির শেষে একটি উপাদান যোগ করে।
পপ(0) − এই ফাংশনটি সারিতে থাকা প্রথম উপাদানটিকে সরিয়ে দেয় এবং ফেরত দেয়।
উদাহরণ
queue=[] queue.append(1) queue.append(2) queue.append(3) print("Initial queue",queue) print("Element popped from the queue") print(queue.pop(0)) print(queue.pop(0)) print("Queue after popping some elements",queue)
আউটপুট
Initial queue [1, 2, 3] Element popped from the queue 1 2 Queue after popping some elements [3]
সারি খালি হয়ে গেলে আপনি আর উপাদানগুলি সরাতে পারবেন না। এটি করার ফলে একটি ব্যতিক্রম হয়৷
queue.pop(0) IndexError: pop from empty list
পদ্ধতি 2 - queue.Queue ব্যবহার করে প্রয়োগ করুন
এটি পাইথন থেকে অন্তর্নির্মিত মডিউল ব্যবহার করে সারি বাস্তবায়নের উপায়। আমাদের সারি থেকে সারি আমদানি করতে হবে। আমরা কিছু নির্দিষ্ট আকারের সাথে সারি শুরু করতে পারি। শূন্যের আকার মানে একটি অসীম সারি।
অপারেশন জড়িত
সর্বোচ্চ আকার - একটি সারিতে অনুমোদিত উপাদানের সর্বাধিক সংখ্যা
পান() - সারি থেকে প্রথম উপাদানটি সরান এবং ফেরত দিন। সারি খালি থাকলে, সারিতে অন্তত একটি উপাদান না থাকা পর্যন্ত অপেক্ষা করুন৷
get_nowait() − সারি থেকে প্রথম উপাদানটি সরান এবং ফেরত দিন৷ যদি সারি খালি থাকে তবে একটি ব্যতিক্রম উত্থাপন করুন৷
পুট(আইটেম) − সারির শেষে একটি উপাদান যুক্ত করুন৷ যদি সারি পূর্ণ হয়, একটি বিনামূল্যের স্লট পাওয়া পর্যন্ত অপেক্ষা করুন৷
put_nowait(আইটেম) − সারির শেষে একটি উপাদান যুক্ত করুন৷ যদি সারিটি পূর্ণ হয় তবে একটি ব্যতিক্রম বাড়ান৷
পূর্ণ() − সারি পূর্ণ হলে সত্য ফেরত দেয়, অন্যথায় মিথ্যা ফেরত দেয়।
খালি() − সারি খালি থাকলে True ফেরত দিন, অন্যথায় মিথ্যা
qsize() − সারিতে উপস্থিত উপাদানের সংখ্যা প্রদান করে
উদাহরণ
from queue import Queue q=Queue(maxsize=3) q.put(1) q.put(2) q.put(3) print("Is queue full",q.full()) print("Element popped from the queue") print(q.get()) print(q.get()) print("Number of elements in queue",q.qsize()) print("Is queue empty",q.empty())
আউটপুট
Is queue full True Element popped from the queue 1 2 Number of elements in queue 1 Is queue empty False
পদ্ধতি 3 - collections.deque ব্যবহার করে প্রয়োগ করুন
এটি পাইথনে একটি সারি বাস্তবায়নের আরেকটি উপায়। আমাদের সংগ্রহ মডিউল থেকে deque আমদানি করতে হবে।
অপারেশন জড়িত
সংযোজন() − এই ফাংশনটি সারির শেষে একটি উপাদান যোগ করে।
popleft() − এই ফাংশনটি O(1) সময়ের জটিলতায় সারিতে থাকা প্রথম উপাদানটিকে সরিয়ে দেয় এবং ফেরত দেয়।
উদাহরণ
from collections import deque queue=deque() queue.append(1) queue.append(2) queue.append(3) print("Intial queue: ",queue) print("Element popped from the queue") print(queue.popleft()) print(queue.popleft()) print("Queue after popping some elements: ",queue)
আউটপুট
Intial queue: deque([1, 2, 3]) Element popped from the queue 1 2 Queue after popping some elements: deque([3])
একটি খালি ডিকে popleft() ফাংশন ব্যবহার করলে একটি ব্যতিক্রম হবে৷