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

স্ট্যাক ডেটা স্ট্রাকচার: সহজ ধারণা এবং কোডিং গাইড

স্বাগতম! আজকের এই আলোচনায় আমরা কম্পিউটার সায়েন্সের খুবই জনপ্রিয় এবং গুরুত্বপূর্ণ একটি বিষয় 'স্ট্যাক' (Stack) নিয়ে কথা বলব। সোজা কথায় বলতে গেলে, স্ট্যাক হলো ডেটা সাজিয়ে রাখার একটা বিশেষ পদ্ধতি যা আমাদের প্রতিদিনের অনেক কাজকে সহজ করে দেয়। তুমি যদি প্রোগ্রামিং শিখতে চাও বা সফটওয়্যার ইঞ্জিনিয়ার হতে চাও, তবে স্ট্যাক সম্পর্কে জানা তোমার জন্য একদম বাধ্যতামূলক। চলো তাহলে একদম সহজ ভাষায় স্ট্যাকের দুনিয়ায় ঘুরে আসি!


Introduction (ভূমিকা)

স্ট্যাক (Stack) হলো একটি লিনিয়ার বা রৈখিক ডেটা স্ট্রাকচার। এটাকে একটা জাদুর বাক্সের মতো চিন্তা করতে পারো যেখানে তুমি জিনিসপত্র রাখতে পারো, কিন্তু বের করার সময় একটা বিশেষ নিয়ম মেনে চলতে হয়। এই নিয়মটাকে বলা হয় LIFO (Last-In, First-Out)। মানে যে জিনিসটা সবার শেষে রাখা হবে, সেটাই সবার আগে বের করতে হবে। ভিডিওটির [59:31] অংশ থেকে এই ধারণাটি শুরু হয়েছে।


স্ট্যাক কী এবং এটা কীভাবে কাজ করে?

ভিডিও রেফারেন্স: [59:31] - [01:00:15]

স্ট্যাককে বোঝার জন্য তুমি একটার ওপর একটা রাখা কতগুলো প্লেটের কথা চিন্তা করো। তুমি যখন নতুন প্লেট রাখবে, সেটা কিন্তু সবার ওপরেই রাখবে। আবার যখন প্লেট সরাতে যাবে, তখন সবার ওপরের প্লেটটাই আগে সরাবে। মাঝখান থেকে বা নিচ থেকে সরাতে গেলে সব ভেঙে পড়ে যাওয়ার ভয় থাকে!

মূল দুটি অপারেশন: ১. Push (পুশ): স্ট্যাকের একদম ওপরে নতুন কিছু যোগ করা। [59:37] ২. Pop (পপ): স্ট্যাকের একদম ওপর থেকে কিছু সরিয়ে ফেলা। [59:37]

  • সহজ ব্যাখ্যা (Difficult Word Elaborated):

    • LIFO (Last-In First-Out): এর বাংলা হলো "সবার শেষে যে আসবে, সবার আগে সে যাবে"। যেমন ধরো, একটা সরু গলি যেখানে গাড়ি ঢুকলে পেছনের গাড়িটা আগে না বের করলে আগের গাড়ি বের হতে পারে না।

    • Pointer (পয়েন্টার): ভিডিওতে 'Top Pointer' এর কথা বলা হয়েছে [59:59]। এটা আসলে একটা নির্দেশক বা আঙুল যেটা সবসময় স্ট্যাকের ওপরের অংশকে নির্দেশ করে রাখে।


স্ট্যাকের জটিলতা বিশ্লেষণ (Complexity Analysis)

ভিডিও রেফারেন্স: [01:02:58] - [01:03:23]

যেকোনো ডেটা স্ট্রাকচার শেখার সময় তার 'Complexity' বা কাজ করার গতি জানা খুব জরুরি। স্ট্যাকের ক্ষেত্রে সময় কেমন লাগে চলো দেখি:

  • Pushing (যোগ করা): O(1) - এটা সবসময় দ্রুত কাজ করে কারণ আমরা শুধু ওপরের দিকে ডেটা রাখি।

  • Popping (সরানো): O(1) - এটাও খুব দ্রুত হয় কারণ আমরা শুধু ওপর থেকে ডেটা তুলে নেই।

  • Peeking (দেখা): O(1) - স্ট্যাকের ওপরে কী আছে তা শুধু দেখতেও কোনো সময় নষ্ট হয় না।

  • Searching (খোঁজা): O(n) - এখানে কিছুটা সমস্যা। স্ট্যাকের ভেতরে কোনো নির্দিষ্ট ডেটা খুঁজতে হলে আমাদের ওপর থেকে নিচ পর্যন্ত সব চেক করতে হতে পারে। তাই এতে সময় বেশি লাগে। [01:03:19]

  • সহজ ব্যাখ্যা:

    • O(1): এটাকে বলে 'কনস্ট্যান্ট টাইম'। মানে ডেটা কম হোক বা অনেক বেশি, কাজটা করতে সবসময় একই রকম খুব অল্প সময় লাগবে।

    • O(n): এটাকে বলে 'লিনিয়ার টাইম'। মানে যদি স্ট্যাকে ১০টা জিনিস থাকে তবে ১০ বার খুঁজতে হবে, আর ১০০টা থাকলে ১০০ বার খুঁজতে হবে। ডেটা বাড়লে সময়ও বাড়বে।


স্ট্যাক কোডিং এবং ইমপ্লিমেন্টেশন

ভিডিওতে স্ট্যাক তৈরির বিভিন্ন পদ্ধতির কথা বলা হয়েছে। সাধারণত লিঙ্কড লিস্ট (Linked List) দিয়ে স্ট্যাক বানানো খুব জনপ্রিয়। নিচে একটি সহজ জাভা কোড স্নিপেট দেওয়া হলো যা দিয়ে তুমি স্ট্যাকের কাজ বুঝতে পারবে:

Java

public class MyStack {
    // স্ট্যাকের ওপরের অংশ ট্র্যাক করার জন্য
    private Node top; 

    // নতুন ডেটা যোগ করা (Push)
    public void push(int value) {
        Node newNode = new Node(value);
        newNode.next = top;
        top = newNode;
    }

    // ডেটা সরিয়ে ফেলা (Pop)
    public int pop() {
        if (top == null) return -1; // স্ট্যাক খালি থাকলে
        int value = top.data;
        top = top.next;
        return value;
    }
} 

কোড ব্যাখ্যা: এখানে push মেথডটি নতুন একটি নোড তৈরি করে তাকে বর্তমানের top-এর জায়গায় বসিয়ে দেয়। আর pop মেথডটি ওপরের নোডটিকে সরিয়ে তার নিচের নোডটিকে নতুন top বানিয়ে দেয়। এর ফলে আমরা সবসময় ওপর থেকেই ডেটা আদান-প্রদান করতে পারছি।


বিশ্লেষণ এবং আমার ভাবনা (Analysis & Perception)

কন্টেন্ট ক্রিয়েটর যা বোঝাতে চেয়েছেন: ভিডিওর এই অংশে স্ট্যাককে একটি বাস্তবমুখী এবং অত্যন্ত শক্তিশালী টুল হিসেবে দেখানো হয়েছে। এর সরলতা (Simplicity) ই একে অনন্য করেছে। আমরা যখন ব্রাউজারে 'Back' বাটনে ক্লিক করি বা কম্পিউটারে 'Undo' করি, তখন পেছনে এই স্ট্যাক-ই কাজ করে।

বাস্তবতা ও সাজেশন: ১. বিকল্প চিন্তা: স্ট্যাক শুধু লিঙ্কড লিস্ট নয়, অ্যাররে (Array) দিয়েও বানানো যায়। তবে অ্যাররে দিয়ে বানালে স্ট্যাকের সাইজ আগে থেকে ঠিক করে দিতে হয়, যা কিছুটা অসুবিধাজনক হতে পারে। ২. পরামর্শ: তুমি যদি বিগিনার হও, তবে আগে স্ট্যাকের LIFO নিয়মটি ভালো করে আয়ত্ত করো। কোডিং করার সময় খেয়াল রাখবে যেন 'Stack Overflow' (স্ট্যাক ভরে যাওয়া) না হয়।

স্ট্যাক শেখা মানে হলো কম্পিউটার কীভাবে কাজ মনে রাখে তার একটা গোপন রহস্য জেনে ফেলা। এটি অন্যান্য জটিল অ্যালগরিদম যেমন- DFS (Depth First Search) বুঝতেও তোমাকে সাহায্য করবে। তাই স্ট্যাকের ওপর দখল আনা তোমার প্রোগ্রামিং ক্যারিয়ারের জন্য অনেক বড় একটি ধাপ!

[

Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer

freeCodeCamp.org · 7.3M views

](http://www.youtube.com/watch?v=RBSGKlAvoiM)

মন্তব্যসমূহ

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

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

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

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

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

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

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