اذا لم تجد ما تبحث عنه يمكنك استخدام كلمات أكثر دقة.
أبسط طريقة لتعريف المكدس هي استخدام المصفوفة في تمثيل المكدس، سوف نصرح عن المكدس كما في حالة التصريح عن المسجل بلغة الباسكال :
Const maxstack = 100; Type stack = record; Item : array [1..maxstack] of integer; Top : 0..maxstack; Var s:stack
من التصريحات المعطاة نجد أن عناصر المكدس s الموجودة في المصفوفة s.item هي أعداد صحيحة وأن المكدس لن يحتوي على من أكثر من maxstack عنصر، ويمكن تغيير عناصر المكدس بتغيير نوع عناصر المصفوفة s.item.بما أن top هو حقل في المسجل stack فإن قيمة المؤشر الذي يدل على عنصر القمة هو s.top. إذا كانت قيمة s.top = 3 فهذا يدل على أن المكدس يحتوي على ثلاثة عناصر هي s.item[1] وs.item[2] وs.item[3]. إذا طبقنا عملية pop على المكدس فإن قيمة s.top يجب أن تعدل لتصبح مساوية 2 ويصبح عنصر القمة هو [s.item[2، بينما إذا طبقنا عملية push على المكدس فإن قيمة s.top يجب أن تعدل لتصبح مساوية 4 ويصبح عنصر القمة هو [s.item[4. للبدء بمكدس فارغ يجب أن نكتب : s.top=0. بالاعتماد على ما سبق يمكن كتاية التابع (empty(s بلغة الباسكال كما يلي:
Function Empty(s:stack) : Boolean; Begin If s.stop = 0 Then empty =true; Else empty =false; End;
ويمكن استدعاء هذا التابع بالشكل :
If Empty(s) Then {المكدس فارغ} Else {المكدس ليس فارغاً}
ينفذ التابع (Pop(s الذي يأخذ بعين الاعتبار حالة كون المكدس فارغ كما يلي:
ويكتب هذا التابع بلغة الباسكال كما يلي :
Function Pop (var s:stack) : integer Begin If empty(s) Then error('stack underflow'); Else Begin Pop =s.item[s.top]; s.top =s.top - 1; End; End;
يتم ادخال عنصر إلى المكدس عن طريق زيادة s.top بمقدار 1 ومن ثم إدخال x إلى المصفوفة s.item. يُكتب الإجراء الذي يقوم بذلك على الشكل التالي:
Procedure push (var s:stack; x:integer) Begin s.top = s.top + 1; s.item[s.top] = x; End;
قبل استدعاء الاجراء push يجب التأكد من أن المكدس غير ممتلئ وبالتالي يجب تعديل الجراء السابق بحيث يصبح كالآتي:
Procedure Push (var s:stack; x:integer) Begin If s.top = maxstack Then error('stack overflow'); Else Begin s.top = s.top + 1; s.item[s.top] = x; End; End;