1. مقدمة موجزة لقوائم ومكدس
1.1. المفاهيم الأساسية لقوائم الانتظار
قائمة الانتظار: إنها مجموعة تدعم أولاً في الأول (FIFO) ، أي أن البيانات التي تم إدراجها أولاً يتم جلبها أولاً!
كما هو مبين في الشكل أدناه:
1.2. المفاهيم الأساسية للمكدس
Stack: إنها مجموعة تدعم آخر مرة في المركز الأول (LIFO) ، أي البيانات التي تم إدخالها لاحقًا يتم جلبها أولاً!
كما هو مبين في الشكل أدناه:
2. قم بتنفيذ قوائم الانتظار والمداخن في JavaScript
في JavaScript ، يتم تنفيذ قوائم الانتظار والصفائف بشكل رئيسي من خلال المصفوفات. يتم توفير الأساليب التالية في صفائف JS لتسهيل علينا تنفيذ قوائم الانتظار والمداخن:
• Shift: حذف العنصر الأول من الصفيف وإرجاع قيمة هذا العنصر.
• إلغاء الاضطراب: أضف عنصرًا أو أكثر في بداية الصفيف وأرجع طولًا جديدًا
• اضغط: أضف عنصرًا في نهاية الوسط وأرجع الطول الجديد
• POP: حذف العنصر الأخير من الصفيف وإرجاع قيمة هذا العنصر.
2.1. تنفيذ قوائم الانتظار
<script type = "text/javaScript"> // قم بإنشاء صفيف لمحاكاة قائمة الانتظار var a = new array () console.log ("Enter") ؛ A.UNSHIFT () console.log (a) ؛ // -----> A.UNSHIFT () ؛ console.log (a) ؛ // -----> ، A.UNSHIFT () ؛ console.log (a) ؛ //- ----> ، a.unshift () ؛ console.log (a) ؛ // -----> ، a.unshift () ؛ console.log (a) ؛ // ----> ،، A.Unshift () ؛ console.log (a) ؛ // ------> ،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،000 .log ("الخروج ، أولاً في ، أولاً خارج") ؛ console.log (a) ؛ // pop: حذف العنصر الأخير من الصفيف وإرجاع قيمة هذا العنصر A.Pop () ؛ // -----> console.log (a) ؛ A.Pop () ؛ // -----> console.log (a) ؛ A.Pop () ؛ // -----> console.log (a) ؛ a.pop () ؛ // -----> console.log (a) ؛ a.pop () ؛يظهر تأثير الإخراج على وحدة التحكم في متصفح Google في الشكل أدناه:
2.2. تنفيذ المكدس
<script type = "text/javaScript"> // قم بإنشاء صفيف لمحاكاة المكدس var a = new Array () console.log ("stack") ؛ a.push () console.log (a) ؛ // -----> a.push () ؛ console.log (a) ؛ // -----> ، a.push () ؛ console.log (a) ؛ // --------- -> ، a.push () ؛ console.log (a) ؛ // -----> ، a.push () ؛ console.log (a) ؛ // ----> ،، a.push () ؛ console.log (a) ؛ // ----> ،،، console.log (" خارج المكدس ، أولا الخروج ") ؛ console.log (a) ؛ // pop: حذف العنصر الأخير من الصفيف وإرجاع قيمة هذا العنصر A.Pop () ؛ // -----> console.log (a) ؛ A.Pop () ؛ // -----> console.log (a) ؛ A.Pop () ؛ // -----> console.log (a) ؛ a.pop () ؛ // -----> console.log (a) ؛ a.pop () ؛يظهر تأثير الإخراج على وحدة التحكم في متصفح Google في الشكل أدناه:
2.3. اختبار الأداء لطريقة الدفع وطريقة إلغاء الاضطراب
يمكن أن تضيف أساليب دفع Array و Unsonft عناصر إلى الصفيف الحالي. الفرق هو أنه يتم إضافة الدفع في النهاية ، بينما تتم إضافة إلغاء الهاوية في البداية. من المبدأ ، يمكننا أن نعرف أن كفاءة UNSHIFT منخفضة نسبيًا. والسبب هو أنه في كل مرة يضيف فيها عنصرًا ، فإنه يحرك العنصر الموجود أسفل موضع واحد. ولكن ما هو حجم الفرق في الكفاءة؟ لنجري اختبارًا بسيطًا أدناه.
<script type = "text/javaScript">/*تفسير شرح الخدعة لـ "var s =+newDate () ؛" في الرمز كما يلي: =+هذا المشغل غير موجود ؛+يعادل .valueof () ؛+تاريخ جديد () يعادل تاريخ جديد () = [] ؛ var startTime = +New Date () ؛ //+New Date () يعادل Date () } var endtime =+new Date () ؛ console.log ("يستغرق وقتًا للاتصال بطريقة الدفع لإضافة عنصر إلى الصفيف"+(Endtime-StartTime)+"MS") ؛ وقت البدء = +تاريخ جديد () ؛ arr = [] ؛ // اختبار أداء Unshift لـ (var i = ؛ i <؛ i ++) {arr.unshift (i) ؛ } Endtime =+New Date () ؛ console.log ("يستغرق الأمر وقتًا لاستدعاء طريقة Unshift لإضافة عنصر إلى Array"+(Endtime-StartTime)+"MS") ؛ </script>يقوم هذا الرمز بإجراء 100000 عملية للدفع وغير المنحرف على التوالي ، ويديرها مرة واحدة في متصفح Google. تظهر النتيجة في الشكل أدناه:
يمكن أن نرى أن UNSNIFT أبطأ حوالي 100 مرة من الدفع! لذلك ، يجب أن تستخدم عدم الانفصال بحذر في الحياة اليومية ، وخاصة بالنسبة للمصفوفات الكبيرة. إذا كان عليك تحقيق تأثير عدم الانهيار ، فيمكنك استخدام طريقة Array العكسية ، والتي يمكن أن عكس صفيف. أضف أولاً العناصر المراد وضعها في المصفوفة مع الدفع ، ثم قم بتنفيذ عكس مرة أخرى لتحقيق تأثير عدم الانعكاس. على سبيل المثال:
<script type = "text/javaScript"> // قم بإنشاء صفيف لمحاكاة المكدس var a = new array () ؛ طريقة تسمى العكس والتي يمكن أن تقلب صفيف. أضف أولاً العناصر الواجب وضعها في الصفيف بالدفع ، ثم قم بإجراء عكس مرة أخرى ، ويتم تحقيق تأثير عدم الانهاك A.Reverse () ؛ // استخدام طريقة عكسية لعكس وحدة Console.log ("ترتيب العناصر في الصفيف بعد انقلاب الصفيف") ؛يظهر تأثير الإخراج على وحدة التحكم في متصفح Google في الشكل أدناه:
انطلاقًا من نتائج الجري ، تم عكس ترتيب عناصر الصفيف.
2.4. اختبار الأداء للطريقة العكسية
ما هو أداء العكس؟ دعنا نختبرها مرة أخرى:
<script type = "text/javaScript"> var arr = [] ، s = +date new ؛ لـ (var i = ؛ i <؛ i ++) {arr.push (i) ؛ } // استدعاء الطريقة العكسية لعكس ترتيب العناصر في Array arr.reverse () ؛ console.log ("استدعاء طريقة عكسية لعكس ترتيب العناصر في الصفيف:"+(+تاريخ جديد - S)+"MSEC") ؛ </script>يظهر تأثير الإخراج على وحدة التحكم في متصفح Google في الشكل أدناه:
من تأثير الجري ، يمكننا أن نرى أن الطريقة العكسية لها أداء عالي للغاية ويمكن استخدامها بثقة.
ما سبق هو ملخص لتنفيذ قوائم الانتظار والكوابات من خلال المصفوفات في JavaScript ، وقد اختبرت ببساطة مزايا الأداء وعيوب الدفع ، غير الهاوية ، والعكس في تشغيل المصفوفات الكبيرة.
ما سبق هو قائمة الانتظار والمكدس في بنية بيانات تنفيذ مجموعة JavaScript التي أدخلها المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!