সরাসরি প্রধান সামগ্রীতে চলে যান

সহজ ভাষায় Stack ডেটা স্ট্রাকচার এর আদ্যোপান্ত

Introduction: এই ভিডিওটিতে জনপ্রিয় ইনস্ট্রাক্টর শ্রদ্ধা খাপরা (Shradha Khapra) চমৎকারভাবে Stack (স্ট্যাক) ডেটা স্ট্রাকচার নিয়ে আলোচনা করেছেন। স্ট্যাক কী, এটি কীভাবে কাজ করে এবং কীভাবে কোডিং এর মাধ্যমে একে তৈরি করা যায়—এই সব কিছুই খুব সহজভাবে বোঝানো হয়েছে। যারা প্রোগ্রামিং শিখছেন বা ইন্টারভিউয়ের প্রস্তুতি নিচ্ছেন, তাদের জন্য এই টিউটোরিয়ালটি খুবই গুরুত্বপূর্ণ।

১. স্ট্যাক কী? (Introduction to Stack)

ভিডিও লিংক: [00:04]

স্ট্যাক হলো এমন একটি ডেটা স্ট্রাকচার যা মূলত একটি বালতি বা বইয়ের থাকের মতো কাজ করে। এটি LIFO (Last In First Out) নীতি মেনে চলে। তার মানে হলো, যে জিনিসটি আপনি সবার শেষে রাখবেন, সেটিই সবার আগে বের করতে পারবেন।

  • সহজ উদাহরণ: আপনি যদি একটার ওপর একটা ৫টি বই রাখেন, তবে সবচেয়ে ওপরের বইটি (যা সবার শেষে রাখা হয়েছে) আপনাকে আগে সরাতে হবে। এটিই হলো স্ট্যাকের মূল মন্ত্র।

কঠিন শব্দ ও ব্যাখ্যা:

  • LIFO (Last In First Out): এটি একটি নিয়ম যেখানে শেষ আসা জিনিস আগে যায়।

  • Visualize (ভিজুয়ালাইজ): মনে মনে একটি ছবি বা ধারণা তৈরি করা।


২. স্ট্যাকের প্রধান কাজসমূহ (Operations of Stack)

ভিডিও লিংক: [03:56]

একটি স্ট্যাকে মূলত ৩টি গুরুত্বপূর্ণ কাজ করা হয়:

  1. Push (পুশ): স্ট্যাকের ওপরের দিকে নতুন কোনো ডেটা রাখা।

  2. Pop (পপ): স্ট্যাকের একদম ওপরের ডেটাটিকে সরিয়ে ফেলা।

  3. Top (টপ): স্ট্যাকের সবশেষে বা ওপরে কোন ডেটা আছে তা দেখা।

আমার চিন্তা: এই তিনটি কাজই খুব দ্রুত হয় (Constant Time বা O(1)), যার মানে হলো ডেটা সংখ্যা যাই হোক না কেন, এগুলো করতে সবসময় একই সময় লাগে।


৩. ভেক্টর ব্যবহার করে স্ট্যাক তৈরি (Implementation using Vector)

ভিডিও লিংক: [05:13]

সি++ (C++) এ ভেক্টর ব্যবহার করে খুব সহজেই স্ট্যাক বানানো যায়। ভেক্টরের শেষে ডেটা ঢোকানো (Push Back) এবং শেষ থেকে ডেটা বের করা (Pop Back) খুবই সহজ।

কোড উদাহরণ:

C++

#include <iostream>
#include <vector>
using namespace std;

class Stack {
    vector<int> v;
public:
    void push(int val) {
        v.push_back(val); // স্ট্যাকের শেষে ডেটা রাখা
    }
    void pop() {
        v.pop_back(); // স্ট্যাকের শেষ থেকে ডেটা সরানো
    }
    int top() {
        return v[v.size() - 1]; // ওপরের ডেটাটি দেখা
    }
    bool empty() {
        return v.size() == 0; // স্ট্যাক খালি কি না যাচাই
    }
}; 

ব্যাখ্যা: এখানে আমরা একটি class তৈরি করেছি যা ইন্টারনালি একটি vector ব্যবহার করে স্ট্যাকের মতো আচরণ করছে। push_back করলে তা টপে জমা হয়।


৪. লিঙ্কড লিস্ট ব্যবহার করে স্ট্যাক তৈরি (Implementation using Linked List)

ভিডিও লিংক: [14:34]

লিঙ্কড লিস্ট ব্যবহার করার সুবিধা হলো এতে মেমরির কোনো নির্দিষ্ট সীমা নেই। এখানে স্ট্যাকের 'টপ' কে লিঙ্কড লিস্টের 'হেড' (Head) হিসেবে ধরা হয়। যখনই নতুন কিছু পুশ করা হয়, তা তালিকার একদম শুরুতে যোগ করা হয়।


৫. C++ STL ব্যবহার করা (Using C++ STL Stack)

ভিডিও লিংক: [20:22]

বাস্তব জীবনে বা কোডিং প্রতিযোগিতায় আমাদের নিজে থেকে স্ট্যাক ক্লাস লিখতে হয় না। C++ এ আগে থেকেই তৈরি করা স্ট্যাক লাইব্রেরি আছে।

C++

#include <iostream>
#include <stack> // স্ট্যাক লাইব্রেরি
using namespace std;

int main() {
    stack<int> s;
    s.push(10);
    s.push(20);
    
    cout << "Top element: " << s.top() << endl; // আউটপুট আসবে ২০
    return 0;
} 

ব্যাখ্যা: শুধু #include <stack> লিখে আমরা সরাসরি পুশ, পপ এবং টপ ফাংশনগুলো ব্যবহার করতে পারি। এটি অনেক সময় বাঁচায়।


এনালাইসিস ও আমার মতামত:

কন্টেন্ট ক্রিয়েটর শ্রদ্ধা খাপরা স্ট্যাকের বেসিক কনসেপ্টগুলো খুব সুন্দরভাবে ক্লিয়ার করেছেন। বিশেষ করে রিকারশন (Recursion) এর সাথে স্ট্যাকের যে সম্পর্ক, সেটি শুরুতেই বলায় বিষয়টি বুঝতে সুবিধা হয়েছে।

বাস্তব প্রেক্ষাপট ও সম্ভাবনা:

  • কোথায় কাজে লাগে: ব্রাউজারের "Back" বাটন বা এডিটর এর "Undo" (Ctrl+Z) ফাংশন তৈরিতে স্ট্যাক ব্যবহার করা হয়।

  • বিকল্প: কিছু ক্ষেত্রে স্ট্যাকের বদলে Deque বা Queue ব্যবহার করা হয়, তবে যেখানে শেষ আসা ডেটা আগে দরকার, সেখানে স্ট্যাকের কোনো বিকল্প নেই।

  • পরামর্শ: নতুনদের জন্য পরামর্শ হলো, প্রথমে ভেক্টর দিয়ে নিজে স্ট্যাক তৈরি করার চেষ্টা করুন, এতে লজিক পরিষ্কার হবে। এরপর STL ব্যবহার করা শুরু করুন।

সহজ শব্দ সংক্ষেপ:

  • Vector (ভেক্টর): এটি একটি ডাইনামিক অ্যারে যা নিজের আকার বাড়াতে বা কমাতে পারে।

  • STL (Standard Template Library): সি++ এর একটি ভাণ্ডার যেখানে আগে থেকেই অনেক কোড লিখে রাখা আছে আমাদের ব্যবহারের জন্য।

[

Introduction to STACKS | Data Structures & Algorithms | Lecture 66

Shradha Khapra · 302K views

](http://www.youtube.com/watch?v=0X-fV-1ir9c)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...