কিভাবে জাভাস্ক্রিপ্ট ES6 ক্লাস দিয়ে ডেটা স্ট্রাকচার তৈরি করবেন

কিভাবে জাভাস্ক্রিপ্ট ES6 ক্লাস দিয়ে ডেটা স্ট্রাকচার তৈরি করবেন

আপনি যে ভাষা ব্যবহার করেন না কেন ডাটা স্ট্রাকচার কম্পিউটার বিজ্ঞান এবং প্রোগ্রামিং এর একটি মৌলিক দিক। তাদের সম্পর্কে পুঙ্খানুপুঙ্খ জ্ঞান থাকা আপনাকে দক্ষতার সাথে ডেটা সংগঠিত, পরিচালনা, সঞ্চয় এবং সংশোধন করতে সাহায্য করতে পারে। আপনার ব্যবহারের ক্ষেত্রে সঠিক ডেটা স্ট্রাকচার চিহ্নিত করা পারফরম্যান্সকে বিশাল ব্যবধানে উন্নত করতে পারে।





যাইহোক, জাভাস্ক্রিপ্ট শুধুমাত্র আদিম ডাটা স্ট্রাকচার যেমন অ্যারে এবং বস্তুর সাথে ডিফল্টভাবে আসে। কিন্তু ECMAScript 6 (ES6) ক্লাস প্রবর্তনের সাথে, আপনি এখন আদিম ডেটা স্ট্রাকচারের সাহায্যে কাস্টম ডেটা স্ট্রাকচার যেমন স্ট্যাক এবং সারি তৈরি করতে পারেন।





আইপড থেকে আইটিউনসে কীভাবে স্থানান্তর করবেন

স্ট্যাক ডেটা স্ট্রাকচার

স্ট্যাক ডেটা স্ট্রাকচার আপনাকে LIFO (লাস্ট-ইন, ফার্স্ট-আউট) পদ্ধতিতে বিদ্যমান ডেটার উপরে নতুন ডেটা ঠেলে দেওয়ার অনুমতি দেয়। এই লিনিয়ার ডেটা স্ট্রাকচারটি একটি সহজ উদাহরণ ব্যবহার করে চাক্ষুষ করা সহজ। একটি টেবিলে রাখা প্লেটের একটি স্ট্যাক বিবেচনা করুন। আপনি কেবল স্ট্যাকের উপরে থেকে একটি প্লেট যোগ বা অপসারণ করতে পারেন।





আপনি কিভাবে জাভাস্ক্রিপ্ট অ্যারে ব্যবহার করে স্ট্যাক ডেটা স্ট্রাকচার বাস্তবায়ন করতে পারেন এবং এখানে ES6 ক্লাস :

class Stack {
constructor() {
this.data = [];
this.top = -1;
}
}

আসুন অন্বেষণ করি এবং কিছু অপারেশন তৈরি করি যা আপনি একটি স্ট্যাকের উপর সম্পাদন করতে পারেন।



পুশ অপারেশন

স্ট্যাকের মধ্যে নতুন তথ্য toোকানোর জন্য পুশ অপারেশন ব্যবহার করা হয়। পুশ পদ্ধতিতে কল করার সময় আপনাকে একটি পরামিতি হিসাবে ডেটা পাস করতে হবে। ডেটা Beforeোকানোর আগে, স্ট্যাকের উপরের পয়েন্টারটি একটি দ্বারা বৃদ্ধি করা হয়, এবং নতুন ডেটা উপরের অবস্থানে োকানো হয়।

push(data) {
this.top++;
this.data[this.top] = data;
return this.data;
}

পপ অপারেশন

পপ অপারেশনটি স্ট্যাকের উপরের ডেটা উপাদানটি অপসারণ করতে ব্যবহৃত হয়। এই অপারেশনটি করার সময়, উপরের পয়েন্টার 1 দ্বারা হ্রাস করা হয়।





pop() {
if (this.top <0) return undefined;
const poppedTop = this.data[this.top];
this.top--;
return poppedTop;
}

পিক অপারেশন

পিক অপারেশনটি স্ট্যাকের শীর্ষে উপস্থিত মান ফেরত দিতে ব্যবহৃত হয়। এই তথ্য পুনরুদ্ধারের সময় জটিলতা হল O (1)।

আরো জানুন: বিগ-ও নোটেশন কি?





peek() {
return this.top >= 0 ? this.data[this.top] : undefined;
}

লিঙ্কযুক্ত তালিকা ডেটা স্ট্রাকচার

একটি লিংকড লিস্ট হল একটি রৈখিক ডেটা স্ট্রাকচার যা পয়েন্টারগুলির সাহায্যে একে অপরের সাথে সংযুক্ত অসংখ্য নোড নিয়ে গঠিত। তালিকার প্রতিটি নোডে ডেটা এবং একটি পয়েন্টার ভেরিয়েবল রয়েছে যা তালিকার পরবর্তী নোডের দিকে নির্দেশ করে।

আরও জানুন: প্রোগ্রামারদের জন্য পয়েন্টারগুলির একটি ভূমিকা

একটি স্ট্যাকের বিপরীতে, জাভাস্ক্রিপ্টে সংযুক্ত তালিকা বাস্তবায়নের জন্য দুটি শ্রেণীর প্রয়োজন। প্রথম শ্রেণী হল নোড একটি নোড তৈরির জন্য ক্লাস, এবং দ্বিতীয় শ্রেণী হল যোজিত তালিকা ক্লাস লিঙ্ক করা তালিকায় সমস্ত অপারেশন করতে। হেড পয়েন্টার লিঙ্ক করা তালিকার প্রথম নোডের দিকে নির্দেশ করে এবং লেইল পয়েন্টার লিঙ্ক করা তালিকার শেষ নোডের দিকে নির্দেশ করে।

class Node {
constructor(data, next = null) {
this.data = data;
this.next = next;
}
}
class LinkedList {
constructor() {
this.head = null;
this.tail = null;
this.size = 0;
}
}

এখানে কয়েকটি প্রাথমিক ক্রিয়াকলাপ রয়েছে যা আপনি একটি লিঙ্কযুক্ত তালিকায় সম্পাদন করতে পারেন:

অপারেশন যোগ করুন

সংযুক্ত তালিকার শেষে একটি নতুন নোড যুক্ত করার জন্য অ্যাপেন্ড অপারেশন ব্যবহার করা হয়। একটি নতুন নোড forোকানোর জন্য আপনাকে প্যারামিটার হিসেবে ডেটা পাস করতে হবে। প্রথমত, ব্যবহার করে একটি নতুন নোড অবজেক্ট তৈরি করুন নতুন জাভাস্ক্রিপ্টে কীওয়ার্ড।

যদি সংযুক্ত তালিকাটি খালি থাকে, মাথা এবং লেজ নির্দেশক উভয়ই নতুন নোডের দিকে নির্দেশ করবে। অন্যথায়, শুধুমাত্র লেজ নির্দেশক নতুন নোডের দিকে নির্দেশ করবে।

append(data) {
const newNode = new Node(data);
if (!this.head) {
this.head = newNode;
this.tail = newNode;
} else {
this.tail.next = newNode;
this.tail = newNode;
}
this.size++;
return this;
}

অপারেশন সন্নিবেশ করান

একটি নির্দিষ্ট সূচীতে একটি নতুন নোড ertোকানোর জন্য, আপনি সন্নিবেশ অপারেশন ব্যবহার করতে পারেন। এই পদ্ধতিতে দুইটি প্যারামিটার লাগে: তথ্য insোকানোর জন্য এবং যে সূচীতে এটি োকানো হবে। সবচেয়ে খারাপ ক্ষেত্রে, এই পদ্ধতিতে O (N) এর একটি সময় জটিলতা রয়েছে কারণ এটি সম্পূর্ণ তালিকার মধ্য দিয়ে যেতে হতে পারে।

insert(data, index) {
if (index this.size) return undefined;
if (index === 0) {
this.head = new Node(data, this.head);
!this.tail ? (this.tail = this.head) : null;
this.size++;
return this;
}
if (index === this.size) return this.append(data);
let count = 0;
let beforeNode = this.head;
while (count !== index) {
beforeNode = beforeNode.next;
count++;
}
const newNode = new Node(data);
let afterNode = beforeNode.next;
newNode.next = afterNode;
beforeNode.next = newNode;
this.size++;
return this;
}

অপারেশন মুছুন

ডিলিট অপারেশনটি নোডের রেফারেন্স পেতে লিঙ্ক করা তালিকার মধ্য দিয়ে যায় এবং আগের নোডের লিঙ্কটি সরিয়ে দেয়। সন্নিবেশ অপারেশনের অনুরূপ, ডিলিট অপারেশনেরও সবচেয়ে খারাপ ক্ষেত্রে O (N) এর সময় জটিলতা রয়েছে।

deleteNode(index) {
if (index === 0) {
const removedHead = this.head;
this.head = this.head.next;
this.size--;
this.size === 0 ? (this.tail = null) : null;
return removedHead;
}
if (index === this.size - 1) {
if (!this.head) return undefined;
let currentNode = this.head;
let newTail = currentNode;
while (currentNode.next) {
newTail = currentNode;
currentNode = currentNode.next;
}
this.tail = newTail;
this.tail.next = null;
this.size--;
this.size === 0 ? ([this.head, this.tail] = [null, null]) : null;
return currentNode;
}
if (index this.size - 1) return undefined;
let count = 0;
let beforeNode = this.head;
while (count !== index - 1) {
beforeNode = beforeNode.next;
count++;
}
const removedNode = beforeNode.next;
let afterNode = removedNode.next;
beforeNode.next = afterNode;
removedNode.next = null;
this.size--;
return removedNode;
}

সারি ডেটা স্ট্রাকচার

কিউ ডেটা স্ট্রাকচার এক কাতারে দাঁড়িয়ে থাকা একগুচ্ছ মানুষের মতো। যে ব্যক্তি প্রথমে কাতারে প্রবেশ করে তাকে অন্যদের সামনে পরিবেশন করা হয়। একইভাবে, এই লিনিয়ার ডেটা স্ট্রাকচার ডাটা insোকা এবং অপসারণের জন্য FIFO (ফার্স্ট ইন, ফার্স্ট আউট) পদ্ধতি অনুসরণ করে। এই পদ্ধতিতে একটি লিঙ্কযুক্ত তালিকা ব্যবহার করে এই ডেটা স্ট্রাকচারটি জাভাস্ক্রিপ্টে পুনরায় তৈরি করা যেতে পারে:

class Queue {
constructor() {
this.front = null;
this.rear = null;
this.size = 0;
}
}

আপনি কিভাবে জাভাস্ক্রিপ্টে একটি সারি থেকে ডেটা সন্নিবেশ এবং অপসারণ করতে পারেন তা এখানে:

সিমের ব্যবস্থা নেই মিমি 2 ফিক্স

এনকিউ অপারেশন

এনকিউ অপারেশন সারিতে নতুন তথ্য োকায়। এই পদ্ধতিটি কল করার সময়, যদি কিউ ডেটা স্ট্রাকচার খালি থাকে, সামনের এবং পিছনের পয়েন্টার উভয়ই কিউতে নতুন ertedোকানো নোডের দিকে নির্দেশ করে। যদি সারি খালি না থাকে, তালিকার শেষে নতুন নোড যুক্ত করা হয় এবং পিছনের পয়েন্টার এই নোডের দিকে নির্দেশ করে।

enqueue(data) {
const newNode = new Node(data);
if (!this.front) {
this.front = newNode;
this.rear = newNode;
} else {
this.rear.next = newNode;
this.rear = newNode;
}
this.size++;
return this;
}

ডিকিউ অপারেশন

ডেকিউ অপারেশন সারির প্রথম উপাদানটি সরিয়ে দেয়। ডিকিউ অপারেশনের সময়, হেড পয়েন্টার তালিকার দ্বিতীয় নোডের দিকে এগিয়ে যায়। এই দ্বিতীয় নোড এখন সারির প্রধান হয়ে ওঠে।

dequeue() {
if (!this.front) return undefined;
if (this.front === this.rear) this.rear = null;
const dequeuedNode = this.front;
this.front = this.front.next;
this.size--;
return dequeuedNode;
}

ডেটা স্ট্রাকচারের পরের ধাপ

ডেটা স্ট্রাকচারগুলি বোঝার জন্য একটি জটিল ধারণা হতে পারে, বিশেষত যদি আপনি প্রোগ্রামিংয়ে নতুন হন। কিন্তু অন্য যেকোনো দক্ষতার মতো, অনুশীলন আপনাকে আপনার অ্যাপ্লিকেশনগুলিতে ডেটা সংরক্ষণ এবং পরিচালনার জন্য যে দক্ষতা প্রদান করে তা সত্যিই বুঝতে এবং প্রশংসা করতে সাহায্য করতে পারে।

অ্যালগরিদমগুলি ডেটা স্ট্রাকচারের মতোই দরকারী এবং আপনার প্রোগ্রামিং যাত্রার পরবর্তী যৌক্তিক পদক্ষেপ হতে পারে। সুতরাং, বাবল বাছাইয়ের মতো সাজানোর অ্যালগরিদম দিয়ে কেন শুরু করবেন না?

শেয়ার করুন শেয়ার করুন টুইট ইমেইল বাবল সাজানোর অ্যালগরিদমের একটি ভূমিকা

বাবল বাছাই অ্যালগরিদম: অ্যারে সাজানোর একটি চমৎকার ভূমিকা।

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • প্রোগ্রামিং
  • জাভাস্ক্রিপ্ট
  • প্রোগ্রামিং
  • কোডিং টিউটোরিয়াল
লেখক সম্পর্কে নিতিন রঙ্গনাথ(31 নিবন্ধ প্রকাশিত)

নিতিন একজন আগ্রহী সফটওয়্যার ডেভেলপার এবং একটি কম্পিউটার ইঞ্জিনিয়ারিং ছাত্র যা জাভাস্ক্রিপ্ট প্রযুক্তি ব্যবহার করে ওয়েব অ্যাপ্লিকেশন তৈরি করে। তিনি একটি ফ্রিল্যান্স ওয়েব ডেভেলপার হিসাবে কাজ করেন এবং তার অবসর সময়ে লিনাক্স এবং প্রোগ্রামিং এর জন্য লিখতে পছন্দ করেন।

নিতিন রঙ্গনাথ থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন