إذا كنت تستخدم أي جهاز حديث، فمن المحتمل أنك واجهت عمليات مكدس، حتى لو لم تدرك ذلك. تعتبر الأكوام أساسية في العديد من مهام البرمجة، بدءًا من إدارة استدعاءات الوظائف وحتى تمكين التراجع عن العمليات.
المكدسات عبارة عن بنية بيانات خطية تتبع ترتيب العمليات التي تنظم البيانات في بنية LIFO أو FILO.
LIFO: ما يدخل أخيرًا، يخرج أولاً.
FILO: ما يدخل أولاً، يخرج أخيرًا.
يتم استخدام الأكوام لتنفيذ العمليات على مجموعة من العناصر مثل إضافة وإزالة العناصر وعرض العناصر العليا وعرض ما إذا كانت المجموعة فارغة أو ممتلئة.
على سبيل المثال:
عندما تكون على متصفح الويب الخاص بك وتزور حاليًا www.ESPN.com وتنقر بطريق الخطأ على إعلان لتذاكر Chicago White Sox للبيسبول. لقد أضفنا إلى مجموعتنا، ربما ليس عن قصد، ولكنها الآن في الجزء العلوي من مجموعتنا. ثم ندرك أن فريق شيكاغو وايت سوكس خسر 15 مباراة متتالية. حسنًا... فلنضغط على زر الرجوع (إزالة هذا العنصر من أعلى المكدس).
نعم، هذا هناك. يوضح هذا مبدأ LIFO في عمليات الأكوام، فنحن نترك (نزيل) آخر صفحة تمت زيارتها من سجلنا (أو الأكوام) للعودة إلى www.ESPN.com... ربما في White Sox's العام المقبل.
تُستخدم عمليات الأكوام غالبًا في التطبيقات التي تحتاج إلى الحفاظ على ترتيب سجل متصفح الويب، والتراجع والإعادة في برامج تحرير النصوص ومكدسات استدعاء الوظائف على سبيل المثال لا الحصر.
الوظائف شائعة الاستخدام عند تغيير الأكوام هي كما يلي:
.Push = لإضافة عنصر إلى المكدس.
.pop = لإزالة العنصر العلوي من المكدس.
.peek = لعرض العنصر العلوي للمكدس.
.length/.size = لتحديد إجمالي الفهارس في المكدس. يستخدم جافا سكريبت (.length)
.isEmpty = يتحقق مما إذا كانت المكدسة فارغة.
.isFull = يتحقق من امتلاء المكدس؛ إذا كان للصفيف حجم ثابت.
يمكن إنشاء بنية بيانات المكدسات باستخدام فئة مكدسات أو باستخدام مصفوفة عادية.
تنفيذ الأكوام بدون فئة:
عند إجراء عمليات مكدسات بدون فئة مكدسات، نقوم بمحاكاة عمليات المكدس باستخدام مصفوفة.
سيكون أدناه مثالاً لاستخدام عمليات المكدسات لعكس مجموعة من الأرقام. سأستخدم JSON.stringify لمقارنة قيم نتيجة المصفوفة بنتيجة المصفوفة المرغوبة.
السابق:
// Reverse an array using stack operations let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array let ordernumberList = []; // array to store the reversed order // Loop through the numberList array to reverse its order for (var i = 0; iأريد تسليط الضوء على عبارة if-else في النهاية. لقد استخدمت طريقة JSON.stringify لمقارنة المصفوفتين، لأنه بدونها، ستعيد المقارنة خطأ، مما يؤدي إلى تفعيل الشرط else، على الرغم من أن المصفوفات لها محتوى متطابق. يحدث هذا لأنه عند مقارنة المصفوفات في JavaScript، تتحقق المقارنة من مراجعها (أي مواقع الذاكرة الخاصة بها) بدلاً من المحتوى الفعلي داخل المصفوفات.
كما يمكننا أن نرى خلال حلقة for-loop، فإن طريقتنا هي .pop (إزالة) الفهرس الأخير في مصفوفة numberList أولاً (LIFO). ثم استخدم طريقة .push لإضافته إلى قائمة ترتيب المصفوفة الجديدة، وعكس المصفوفة الأصلية.
يأتي FILO في المصفوفة الجديدة التي تمت صياغتها حيث أن الفهارس الأولى التي تم دفعها إلى مصفوفة ordernumberList ستكون الفهارس الأخيرة التي تم إخراجها (FILO) إذا تم تعديلها من خلال عمليات المكدسات.
في هذه المقالة، اكتشفنا كيفية عمل المكدسات باستخدام مبادئ LIFO وFILO، وتنفيذ عمليات المكدس في JavaScript. يعد فهم المكدسات أمرًا ضروريًا للعديد من مهام البرمجة، كما يظهر في سيناريوهات العالم الحقيقي مثل تصفح الويب.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3