স্ট্যাকের নাম শুনলেই একটা কমন প্রশ্ন মাথায় ভেসে উঠে স্ট্যাক আসলে কি? এইটা দিয়ে কি করে ? খায় নাকি মাথায় দেয় :p শুধু স্ট্যাক কেন; যেকোন কিছু শুনলেই প্রত্যেক মানুষের মনে স্বভাবতই একটা প্রশ্ন তৈরী হয় আসলে জিনিসটা কি, কেন জানতে হবে,কি কাজে ব্যাবহার করা হয়! ইত্যাদি ইত্যাদি! সেসব নিয়েই আলোচনা হবে আজ ।
ইংরেজি stack শব্দের অর্থ স্তুপ! উইকিপিডিয়া অনুযায়ী স্ট্যাকের সংজ্ঞাঃ
In computer science, a stack or LIFO (last in, first out) is an abstract data type that serves as a collection of elements, with two principal operations: push adds an element to the collection; pop removes the last element that was added.
আমরা জানি মেমরি চারটি সেকশনে ভাগ করাঃ
১। code(text) সেকশনঃ যে অংশে ব্যাবহারকারীর লেখা কোড সংরক্ষন করা হয়।
২। static(global variable) সেকশনঃ এ অংশে সকল গ্লোবাল ভেরিয়েবল সংরক্ষন করা থাকে।
৩। stack সেকশনঃ এখানে সকল ফাংশন এবং সে ফাংশনের ভেতর থাকা সকল ভেরিয়েবল।
৪। heap সেকশনঃ এবং সবশেষে heap সেকশন।
মেমরির ভিবিন্ন অংশ |
চেয়ারের স্ট্যাক |
প্রশ্ন হতে পারে এরকম হওয়ার কারন কি ! এরকম হওয়ার কারন হল, আমরা ইনপুট এবং আউটপুটের জন্য শুধু একটা পথ পাচ্ছি!
#লক্ষনীয়ঃ
○ এই প্রকৃয়াকে বলা হয় LIFO or last in first out
○ ইনপুট দেওয়াকে বলা হয় push
○ বের করে আনাকে বলা হয় pop
○ যে বিন্দুতে গিয়ে ইনপুট নেওয়া বন্ধ হয় তাকে বলা হয় top
#স্ট্যাক ডাটা স্ট্রাকচারের প্রয়োগঃ
1. parsing
2. Recursive function
3. Calling function
4. Expression Evaluation
○ infix to Postfix
○ Infix to prefix
○ postfix to infix
○ prefix to infix
5. Page visited history in a web browser(back button)
6. Matching tag HTML and xml
7. Undo sequence in a text editor
#Implementation of stack: স্ট্যাকের দুই ধরনের implementation আছে। এক. অ্যারে বেসড ইমপ্লিমেন্টেশন
দুই. লিঙ্ক লিস্ট ইমপ্লিমেন্টেশন! পরবর্তীতে আমরা অ্যারে বেসড ইমপ্লিমেন্টেশন সম্পর্কে জানবো! আজ এ পর্যন্তই! ধন্যবাদ :)