ডেটা স্ট্রাকচার ও এর প্রকারভেদ
ডেটা স্ট্রাকচার হলো কাঠামোবদ্ধভাবে সংগঠিত ডেটার সমষ্টি। প্রধানত দুটি ধরনের:
- লিনিয়ার ডেটা স্ট্রাকচার: ডেটা লিনিয়ারভাবে সংগঠিত থাকে। যেমন: অ্যারে, স্ট্রাকচার, স্ট্যাক, কিউ, লিংকড লিস্ট।
- নন-লিনিয়ার ডেটা স্ট্রাকচার: ডেটা হায়ারার্কিক্যালভাবে সংগঠিত থাকে। যেমন: ট্রি, গ্রাফ, সেট, টেবিল।
স্ট্যাক (Stack) কী?
স্ট্যাক একটি লিনিয়ার ডেটা স্ট্রাকচার যেখানে ডেটা শুধু একটি छোরায় (Top) ইনসার্ট এবং ডিলিট করা হয়। এটি LIFO (Last In First Out) সিদ্ধান্ত মেনে চলে—সর্বশেষ ইনসার্ট করা এলিমেন্টটি প্রথমে বের হবে।
প্রধান অপারেশন
- Push: স্টকে এলিমেন্ট যোগ করা।
- Pop: স্টক থেকে এলিমেন্ট বাদ দেওয়া।
স্ট্যাকের কন্ডিশন
- স্ট্যাক ওভারফ্লো: পুরো স্টকে নতুন এলিমেন্ট যোগ করার চেষ্টা।
- স্ট্যাক আন্ডারফ্লো: খালি স্টক থেকে এলিমেন্ট ডিলিট করার চেষ্টা।
অ্যালগরিদম
Push()
if (top == n-1)
printf("Stack Overflow");
else {
top++;
a[top] = item;
}
Pop()
if (top == -1)
printf("Stack Underflow");
else {
item = a[top];
top--;
}
Display()
if (top == -1)
printf("Stack is empty");
else {
for (i = 0; i <= top; i++)
printf("%d ", a[i]);
}
সি প্রোগ্রাম: অ্যারে দিয়ে স্ট্যাক ইমপ্লিমেন্টেশন
#include <stdio.h>
#include <conio.h>
int top = -1, n, a[100];
void push();
void pop();
void display();
int main() {
int ch;
clrscr();
printf("Enter the size of the stack: ");
scanf("%d", &n);
printf("Stack Implementation\n");
printf("1. Push\n2. Pop\n3. Exit\n");
do {
printf("Enter your choice: ");
scanf("%d", &ch);
switch (ch) {
case 1: push(); display(); break;
case 2: pop(); display(); break;
case 3: exit(0);
}
} while (ch >= 1 && ch <= 3);
getch();
return 0;
}
void push() {
int item;
if (top == n-1)
printf("Stack Overflow");
else {
printf("Enter element for insertion: ");
scanf("%d", &item);
top++;
a[top] = item;
}
}
void pop() {
int item;
if (top == -1)
printf("Stack Underflow");
else {
item = a[top];
top--;
printf("Deleted element = %d", item);
}
}
void display() {
int i;
if (top == -1)
printf("Stack is empty");
else {
printf("Contents of the stack: ");
for (i = 0; i <= top; i++)
printf("%d\t", a[i]);
}
}
আউটপুট উদাহরণ
Enter the size of the stack = 5 Stack Implementation 1. Push 2. Pop 3. Exit Enter your choice: 1 Enter element: 10 Contents: 10 Enter your choice: 1 Enter element: 20 Contents: 10 20 Enter your choice: 2 Deleted element = 20 Contents: 10 ...