stack و queue فى الجافاسكربت


السلام عليكم و رحمه الله تعالى و بركاته

ال queue هو مجموعه مرتبه من الكائنات ، الأضافه تكون فى اخر المجموعه  ، و الحذف يكون من اولها ، لذلك الكائن الذى يدخل الاول يحذف الاول ، FIFO اى first in first out .

أما ال stack هو أيضا مجموعه مرتبه من الكائنات ، الاضافه تكون فى اخر المجموعه ، و الحذف يكون من اخرها ، لذلك الذى يدخل اخيرا يحذف اولا ، LIFO اى last in first out .

لا يوجد فى الجافاسكربت كائنات من نوع Stack او Queue كما هو الحال فى لغه JAVA ، لكن الجافاسكربت تحتوى على الصنف Array الذى ممكن من خلاله ادراج خواص كائنات ال Stack و ال Queue بمنتهى السهوله .

يحتوى الصنف Array فى جافاسكربت على الوظيفه push التى تدفع الكائن إلى نهايه المصفوفه و ترجع عدد الكائنات بالمصفوفه ، و يحتوى ايضا على الوظيفه shift التى تحذف اول كائن دخل المصفوفه و ترجعه ، و بهاتين الوظيفتين يمكننا عمل queue كما يوضح المثال البسيط التالى :

var arr = [];
// {arr.push} add at the end, return arr.length
arr.push("one"); //1
arr.push("two"); //2
arr.push("three"); //3
arr.push("four"); // 4
alert(arr); // [one,two,three,four]

// {arr.shift} remove from start, and return removed element
var q;
q=arr.shift(); // do somthing with {one}
q=arr.shift(); // do somthing with {two}
q=arr.shift(); // do something with {three}

فى الواقع يستخدم ال queue مثلا فى تخزين طلبات ال Ajax بالترتيب ، و تنفيذ اول طلب ثم اللى بعده بعد انتهاء الاول كما فى تطبيق gmail ، او اى تطبيق يعتمد منطقه على تنفيذ بعض العمليات على المدخلات بترتيب دخولها .

يحتوى الصنف Array فى جافاسكربت على الوظيفه pop التى تحذف اخر كائن تم اضافته للمصفوفه عن طريق push و ترجع هذا الكائن الذى تم حذفه ، و بهذا يمكننا ادراج stack كما يوضح المثال البسيط التالى :

var arr = [];
// {arr.push} add at the end, return arr.length
arr.push("one","two","three","four"); // 4
alert(arr); // [one,two,three,four]

// {arr.pop} remove from end, and return removed element
var s;
s=arr.pop(); // do something with {four}
s=arr.pop(); // do something with {three}
s=arr.pop(); // do something with {two}
s=arr.pop(); // do something with {one}

فى الواقع يستخدم ال stack مثلا فى عمل نظام undo/redo الذى سنتعمله ان شاء الله فى سلسله JavaScript design patterns التى لم أبدأ فى نشر مقالاتها🙂 السلسله صعبه جدا فى شرحها و أمثلتها كبيره جدا ، لذلك امسح و اكتب و امسح و اكتب إلى ان اصل الى موضوع يرضينى و ان شاء الله انشر موضوع كل حين عندما انتهى من كتابته .

وجب التنويه إلى انك إذا استخدام unshift للإضافه فى اول المصفوفه و إستخدمه pop للحذف من اخرها فإنك تقوم بعمل queue ، و ايضا اذا استخدمت unshift للاضافه فى اول المصفوفه و استخدمت shift للحذف من اولها فإنك تقوم بعمل stack .

الأوسمة:

5 تعليقات to “stack و queue فى الجافاسكربت”

  1. almhajer Says:

    ههههه يعطيك العافية وتسلم على الفكرة وزي مابيقولو سكت دهرا ونطق شكرا
    بانتظار السلسلة بشوق وحر شديد سلمت يداك بس لاتطول علينا بيها لانو الوقت لاينتظر تمنياتي لك بالتوفيق الدائم

  2. mostafa farghaly Says:

    والله يا مهاجر لولا الدراسه لدونت يوميا

  3. almhajer Says:

    الله بيعطيك العافية بارك الله فيك والله انا عشعشت في فيا كلمة قلتها انت تقراء ساعة وهم دائما يقروءن الله بجزاك ماهو خير ويوفقك ويسهل لك امرورك ودراستك

  4. Ahmed Mahmoud Says:

    I have to say Thank You bro for your great lessons
    sorry I can’t write in Arabic right now🙂

  5. مالك (شعاع الاكوان) Says:

    جزاك الله كل خيرْ
    معلومات قيمة وجميلة جدا
    استفدت منها بدراستي

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s


%d مدونون معجبون بهذه: