কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে Stack ক্লাসের সম্পূর্ণ ইমপ্লিমেন্টেশন


Stack Class: সম্পূর্ণ ইমপ্লিমেন্টেশন

স্ট্যাক (Stack) হলো LIFO (Last-In-First-Out) ডেটা স্ট্রাকচার। নিচে সম্পূর্ণ ফিচারসহ Stack ক্লাস দেওয়া হলো।

সম্পূর্ণ Stack Class কোড

class Stack {
  constructor(maxSize = 10) {
    // ডিফল্ট ম্যাক্স সাইজ ১০
    this.maxSize = maxSize;
    // ইন্টারন্যাল স্টোরেজ
    this.container = [];
  }

  // কন্টেন্টস ডিসপ্লে
  display() {
    console.log(this.container);
  }

  // স্ট্যাক খালি কিনা
  isEmpty() {
    return this.container.length === 0;
  }

  // স্ট্যাক ফুল কিনা
  isFull() {
    return this.container.length >= this.maxSize;
  }

  // এলিমেন্ট যোগ করুন (টপে)
  push(element) {
    if (this.isFull()) {
      console.log("Stack Overflow! স্ট্যাক ফুল।");
      return false;
    }
    this.container.push(element);
    return true;
  }

  // এলিমেন্ট সরান (টপ থেকে)
  pop() {
    if (this.isEmpty()) {
      console.log("Stack Underflow! স্ট্যাক খালি।");
      return undefined;
    }
    return this.container.pop();
  }

  // টপ এলিমেন্ট দেখুন (রিমুভ ছাড়া)
  peek() {
    if (this.isEmpty()) {
      console.log("Stack Underflow! স্ট্যাক খালি।");
      return undefined;
    }
    return this.container[this.container.length - 1];
  }

  // স্ট্যাক খালি করুন
  clear() {
    this.container = [];
  }

  // বর্তমান সাইজ
  size() {
    return this.container.length;
  }
}

ব্যবহারের উদাহরণ

const stack = new Stack(3);

stack.push(10);
stack.push(20);
stack.push(30);
stack.display(); // [ 10, 20, 30 ]

console.log("Peek:", stack.peek()); // 30
console.log("Pop:", stack.pop());   // 30
stack.display(); // [ 10, 20 ]

console.log("Size:", stack.size()); // 2

stack.clear();
stack.display(); // []
console.log("Is Empty:", stack.isEmpty()); // true

স্ট্যাক অপারেশন সারাংশ

মেথড কাজ রিটার্ন কমপ্লেক্সিটি
push() টপে এলিমেন্ট যোগ Boolean (সাফল্য) O(1)
pop() টপ এলিমেন্ট সরিয়ে রিটার্ন এলিমেন্ট / undefined O(1)
peek() টপ এলিমেন্ট দেখান (রিমুভ নেই) এলিমেন্ট / undefined O(1)
isEmpty() খালি চেক Boolean O(1)
isFull() ফুল চেক Boolean O(1)
clear() সকল এলিমেন্ট মুছে ফেলা undefined O(1)
size() বর্তমান সাইজ Number O(1)

স্ট্যাকের বাস্তব ব্যবহার

  • ফাংশন কল স্ট্যাক: রিকার্সন, এক্সিকিউশন কনটেক্সট।
  • অনডু/রিডো: এডিটর, ব্রাউজার ইতিহাস।
  • এক্সপ্রেশন ইভ্যালুয়েশন: পোস্টফিক্স/ইনফিক্স পার্সিং।
  • ব্যাকট্র্যাকিং অ্যালগরিদম: মেজ সল্ভিং, N-Queens।
  • সিনট্যাক্স পার্সিং: ব্র্যাকেট ম্যাচিং, HTML ট্যাগ ভ্যালিডেশন।

জাভাস্ক্রিপ্ট নেটিভ অ্যারে হিসেবে স্ট্যাক

const stack = [];

stack.push(1); // [1]
stack.push(2); // [1, 2]
stack.push(3); // [1, 2, 3]

console.log(stack[stack.length - 1]); // Peek: 3
console.log(stack.pop());             // Pop: 3
console.log(stack);                   // [1, 2]

নেটিভ অ্যারে push/pop O(1) দিয়ে স্ট্যাক আচরণ করে। ক্লাস ব্যবহার করলে ক্যাপাসিটি লিমিট, এরর হ্যান্ডলিং, সেমান্টিক্স পাওয়া যায়।

  1. JavaScript-এ Stack ডেটা স্ট্রাকচার: LIFO নীতি এবং সম্পূর্ণ বাস্তবায়ন

  2. জাভাস্ক্রিপ্টে স্ট্যাক (Stack) বাস্তবায়ন

  3. C#-এ Stack ক্লাস (Stack Class)

  4. C#-এ Stack ক্লাস