جاوا اسکرپٹ ES6 کلاسز کے ساتھ ڈیٹا سٹرکچر بنانے کا طریقہ

جاوا اسکرپٹ ES6 کلاسز کے ساتھ ڈیٹا سٹرکچر بنانے کا طریقہ

ڈیٹا ڈھانچے کمپیوٹر سائنس اور پروگرامنگ کا ایک بنیادی پہلو ہیں ، قطع نظر اس کے کہ آپ جس زبان کو استعمال کرتے ہیں۔ ان کے بارے میں مکمل معلومات رکھنے سے آپ کو ڈیٹا کو موثر انداز میں ترتیب دینے ، انتظام کرنے ، ذخیرہ کرنے اور اس میں ترمیم کرنے میں مدد مل سکتی ہے۔ آپ کے استعمال کے کیس کے لیے مناسب ڈیٹا ڈھانچے کی نشاندہی کرنے سے کارکردگی میں بہت زیادہ فرق آسکتا ہے۔





تاہم ، جاوا اسکرپٹ صرف بنیادی ڈیٹا ڈھانچے کے ساتھ آتا ہے جیسے بطور ڈیری اور اشیاء۔ لیکن ECMAScript 6 (ES6) کلاسوں کے تعارف کے ساتھ ، اب آپ ڈیٹا کے بنیادی ڈھانچے کی مدد سے اپنی مرضی کے مطابق ڈیٹا ڈھانچے جیسے اسٹیکس اور قطاریں بنا سکتے ہیں۔





ہومبرو کو wii میں کیسے شامل کریں۔

اسٹیک ڈیٹا سٹرکچر۔

اسٹیک ڈیٹا ڈھانچہ آپ کو اجازت دیتا ہے کہ موجودہ ڈیٹا کے اوپر نئے ڈیٹا کو LIFO (آخری میں ، پہلے آؤٹ) طریقے سے آگے بڑھایا جائے۔ یہ لکیری ڈیٹا ڈھانچہ ایک سادہ مثال کا استعمال کرتے ہوئے تصور کرنا آسان ہے۔ ایک میز پر رکھی ہوئی پلیٹوں کے ڈھیر پر غور کریں۔ آپ صرف اسٹیک کے اوپر سے ایک پلیٹ شامل یا ہٹا سکتے ہیں۔





یہاں ہے کہ آپ جاوا اسکرپٹ اریوں کا استعمال کرتے ہوئے اسٹیک ڈیٹا ڈھانچے کو کس طرح نافذ کرسکتے ہیں۔ ES6 کلاسیں۔ :

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

آئیے کچھ آپریشنوں کو دریافت کریں اور بنائیں جو آپ اسٹیک پر انجام دے سکتے ہیں۔



پش آپریشن۔

پش آپریشن اسٹیک میں نیا ڈیٹا داخل کرنے کے لیے استعمال ہوتا ہے۔ پش میتھڈ کو کال کرتے ہوئے آپ کو ڈیٹا کو پیرامیٹر کے طور پر پاس کرنے کی ضرورت ہے۔ ڈیٹا داخل کرنے سے پہلے ، اسٹیک کا ٹاپ پوائنٹر ایک سے بڑھ جاتا ہے ، اور نیا ڈیٹا ٹاپ پوزیشن پر ڈالا جاتا ہے۔

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;
}
}

یہاں کچھ پرائمری آپریشنز ہیں جو آپ لنکڈ لسٹ پر انجام دے سکتے ہیں۔

آپریشن شامل کریں۔

اپنڈ آپریشن لنکڈ لسٹ کے اختتام پر ایک نیا نوڈ شامل کرنے کے لیے استعمال ہوتا ہے۔ آپ کو نیا نوڈ داخل کرنے کے لیے پیرامیٹر کے طور پر ڈیٹا پاس کرنا ہوگا۔ سب سے پہلے ، کا استعمال کرتے ہوئے ایک نیا نوڈ آبجیکٹ بنائیں۔ نئی جاوا اسکرپٹ میں کلیدی لفظ

اگر منسلک فہرست خالی ہے تو ، سر اور پونچھ دونوں نئے نوڈ کی طرف اشارہ کریں گے۔ بصورت دیگر ، صرف ٹیل پوائنٹر نئے نوڈ کی طرف اشارہ کرے گا۔

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;
}

آپریشن داخل کریں۔

کسی خاص انڈیکس میں نیا نوڈ داخل کرنے کے لیے ، آپ داخل آپریشن کا استعمال کر سکتے ہیں۔ یہ طریقہ دو پیرامیٹرز لیتا ہے: داخل کرنے کے لیے ڈیٹا اور انڈیکس جس پر اسے ڈالا جانا ہے۔ بدترین صورت میں ، یہ طریقہ 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;
}

قطار ڈیٹا کی ساخت

قطار کے اعداد و شمار کا ڈھانچہ ایک قطار میں کھڑے لوگوں کے گروپ کی طرح ہے۔ جو شخص پہلے قطار میں داخل ہوتا ہے اسے دوسروں کے سامنے پیش کیا جاتا ہے۔ اسی طرح ، یہ لکیری ڈیٹا ڈھانچہ ڈیٹا داخل کرنے اور ہٹانے کے لیے FIFO (فرسٹ ان ، فرسٹ آؤٹ) اپروچ کی پیروی کرتا ہے۔ اس ڈیٹا ڈھانچے کو جاوا اسکرپٹ میں ایک لنکڈ لسٹ کا استعمال کرتے ہوئے دوبارہ بنایا جا سکتا ہے:

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

یہ ہے کہ آپ جاوا اسکرپٹ میں قطار سے ڈیٹا کیسے داخل اور ہٹا سکتے ہیں:

میں اپنا مقام آئی فون پر کیسے شیئر کروں؟

انکیو آپریشن۔

انکیو آپریشن قطار میں نیا ڈیٹا داخل کرتا ہے۔ اس طریقہ کار کو کال کرتے ہوئے ، اگر قطار کا ڈیٹا ڈھانچہ خالی ہے تو ، سامنے اور پیچھے دونوں پوائنٹر قطار میں نئے داخل نوڈ کی طرف اشارہ کرتے ہیں۔ اگر قطار خالی نہیں ہے تو ، فہرست کے آخر میں نیا نوڈ شامل کیا گیا ہے اور پیچھے کا اشارہ اس نوڈ کی طرف اشارہ کرتا ہے۔

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 مضامین شائع ہوئے)

نتن سافٹ ویئر ڈویلپر اور کمپیوٹر انجینئرنگ کا طالب علم ہے جو جاوا اسکرپٹ ٹیکنالوجیز کا استعمال کرتے ہوئے ویب ایپلیکیشن تیار کرتا ہے۔ وہ ایک فری لانس ویب ڈویلپر کے طور پر کام کرتا ہے اور اپنے فارغ وقت میں لینکس اور پروگرامنگ کے لیے لکھنا پسند کرتا ہے۔

نتن رنگناتھ سے مزید

ہماری نیوز لیٹر کو سبسکرائب کریں

ٹیک ٹپس ، جائزے ، مفت ای بکس ، اور خصوصی سودوں کے لیے ہمارے نیوز لیٹر میں شامل ہوں!

سبسکرائب کرنے کے لیے یہاں کلک کریں۔