Programming is all about data manipulation. Data structure is way of storing data for further manipulation.
ডাটা স্ট্রাকচার আমাদেরকে বিভিন্ন ডাটা সাজিয়ে রাখার ব্যবস্থা করে দেয়। ডাটা সাজিয়ে রাখার অনেক গুলো "তরিকা" আছে। কোনকিছু আমরা কেন সাজিয়ে রাখি? যেন পরে নির্দিষ্ট একটা ডাটা সহজে খুঁজে পেতে পারি। "তরিকা" গুলোর নাম Array, Stack, Queue, Linked List, Tree, Graph.
এগুলা শ খানেক ডাটা স্ট্রাকচারের মধ্যে কিছুর নাম, যেগুলো অনেক বেশি ব্যবহার হয়।
এই পোস্টটা কিউ বুঝানোর জন্য।
কিউ জিনিসটার সাথে আমরা সবাই পরিচিত। জীবনে আমরা সবাই কখনো না কখনো লাইনে দাঁড়ায়ছি। কিউ এর বেসিক ক্যারেক্টারিস্টিকসের সাথে মিলিয়েই প্রোগ্রামিং এ কিউ এর কনসেপ্ট। বাস্তব জীবনে একটা কিউ তে কি হয়? সবাই লাইন ধরে দাঁড়ায় কিছু একটা কারনে। যে সবার আগে দাঁড়ায় সেই সবার আগে কার্জসিদ্ধি করে। সবার পরের জন সবার পরে।
স্ট্যাকের ক্ষেত্রে আমরা পড়েছিলাম Last In First Out (LIFO) or First In Last Out (FILO)। কেমন আনফেয়ার শোনায় না? সবার পরে আসবে, আবার সবার আগে চলে যাবে। অ্যাটলিস্ট আমার আনফেয়ার লেগেছিলো যখন স্ট্যাক শিখছিলাম। কিউতে এসে সেই আনফেয়ারনেস চলে গেছে। কিউ হলো First In First Out (FIFO) or Last In Last Out (LILO) অর্ডারে চলে।
এখানেও Array ব্যবহার করে কিউ তৈরি হয়। স্ট্যাকের মত না করে ইনডেক্সিংটা হয় শুরু থেকে শেষে, মানে FIFO অর্ডারে।
PUSH: স্ট্যাকের মত কিউতেও পুশ আছে। এই পুশ ফাংশনে যেই ডাটা দেয়া হবে সেটা কিউ এর সবার শেষে যেয়ে যোগ হবে।
POP: এই ফাংশনটাও স্ট্যাকের মত। পার্থক্য শুধু কিউ এর ক্ষেত্রে পপ ফাংশন কল করলে Array এর সবার আগের ডাটা টা কিউ থেকে বের করে দেয়া হবে।
FRONT: স্ট্যাকে যেমন TOP ছিলো, কিউ তে সেরকম ফ্রন্ট আছে। এই ফাংশন কল করলে কিউ এর সবার সামনে কোন ডাটা আছে সেটা শো হয়।
একটা বেসিক কিউ প্রোগ্রামঃ
-----------------------------------------------------------------------------------------------------------------------
খুবই ইজি কোড। ট্রাই করে দেখতে পারেন। কোডের এক্সপ্লেনেশন কোডের ভেতরই দেয়া আছে।
For Further Studies about Stack:
ডাটা স্ট্রাকচার আমাদেরকে বিভিন্ন ডাটা সাজিয়ে রাখার ব্যবস্থা করে দেয়। ডাটা সাজিয়ে রাখার অনেক গুলো "তরিকা" আছে। কোনকিছু আমরা কেন সাজিয়ে রাখি? যেন পরে নির্দিষ্ট একটা ডাটা সহজে খুঁজে পেতে পারি। "তরিকা" গুলোর নাম Array, Stack, Queue, Linked List, Tree, Graph.
এগুলা শ খানেক ডাটা স্ট্রাকচারের মধ্যে কিছুর নাম, যেগুলো অনেক বেশি ব্যবহার হয়।
এই পোস্টটা কিউ বুঝানোর জন্য।
কিউ জিনিসটার সাথে আমরা সবাই পরিচিত। জীবনে আমরা সবাই কখনো না কখনো লাইনে দাঁড়ায়ছি। কিউ এর বেসিক ক্যারেক্টারিস্টিকসের সাথে মিলিয়েই প্রোগ্রামিং এ কিউ এর কনসেপ্ট। বাস্তব জীবনে একটা কিউ তে কি হয়? সবাই লাইন ধরে দাঁড়ায় কিছু একটা কারনে। যে সবার আগে দাঁড়ায় সেই সবার আগে কার্জসিদ্ধি করে। সবার পরের জন সবার পরে।
স্ট্যাকের ক্ষেত্রে আমরা পড়েছিলাম Last In First Out (LIFO) or First In Last Out (FILO)। কেমন আনফেয়ার শোনায় না? সবার পরে আসবে, আবার সবার আগে চলে যাবে। অ্যাটলিস্ট আমার আনফেয়ার লেগেছিলো যখন স্ট্যাক শিখছিলাম। কিউতে এসে সেই আনফেয়ারনেস চলে গেছে। কিউ হলো First In First Out (FIFO) or Last In Last Out (LILO) অর্ডারে চলে।
এখানেও Array ব্যবহার করে কিউ তৈরি হয়। স্ট্যাকের মত না করে ইনডেক্সিংটা হয় শুরু থেকে শেষে, মানে FIFO অর্ডারে।
PUSH: স্ট্যাকের মত কিউতেও পুশ আছে। এই পুশ ফাংশনে যেই ডাটা দেয়া হবে সেটা কিউ এর সবার শেষে যেয়ে যোগ হবে।
POP: এই ফাংশনটাও স্ট্যাকের মত। পার্থক্য শুধু কিউ এর ক্ষেত্রে পপ ফাংশন কল করলে Array এর সবার আগের ডাটা টা কিউ থেকে বের করে দেয়া হবে।
FRONT: স্ট্যাকে যেমন TOP ছিলো, কিউ তে সেরকম ফ্রন্ট আছে। এই ফাংশন কল করলে কিউ এর সবার সামনে কোন ডাটা আছে সেটা শো হয়।
একটা বেসিক কিউ প্রোগ্রামঃ
-----------------------------------------------------------------------------------------------------------------------
#include<iostream.h> #include<conio.h> #include<stdlib.h> #define SIZE 5 int q[SIZE],front=0,rear=0; void main() { int ch; clrscr(); void enqueue(); void dequeue(); void display(); while(1) { cout<<"\n 1. add element"; cout<<"\n 2. remove element"; cout<<"\n 3.display"; cout<<"\n 4.exit"; cout<<"\n enter your choice:"; cin>>ch; clrscr(); switch(ch) { case 1: enqueue(); break; case 2: dequeue(); break; case 3: display(); break; case 4: exit(0); default: cout<<"\n invalid choice"; } } } //Inserting new int void enqueue() { int no; if (rear==SIZE && front==0) cout<<"queue is full"; else { cout<<"enter the num:"; cin>>no; q[rear]=no; } rear++; } //Removing a data void dequeue() { int no,i; if (front==rear) cout<<"queue is empty"; else { no=q[front]; front++; cout<<"\n"<<no<<" -removed from the queue\n"; } } //displaying all members void display() { int i,temp=front; if (front==rear) cout<<"the queue is empty"; else { cout<<"\n element in the queue:"; for(i=temp;i<rear;i++) { cout<<q[i]<<" "; } } }
খুবই ইজি কোড। ট্রাই করে দেখতে পারেন। কোডের এক্সপ্লেনেশন কোডের ভেতরই দেয়া আছে।
For Further Studies about Stack:
Code Used in this Post: Forget Code
Comments
Post a Comment