• Home
  • /
  • Blog
  • /
  • 3 عمليات أساسية للأكوام سهلة للأطفال

3 عمليات أساسية للأكوام سهلة للأطفال

عمليات المكدس

This post is also available in: English (الإنجليزية) हिन्दी (الهندية)

ما هو ستاك؟

المكدس عبارة عنبنية بيانات خطية يمكن التفكير فيها منطقيًا في المكدس المادي أو الكومة. تجد عمليات المكدس مكانًا في عدد من التطبيقات. يمكن توضيح المكدس من خلال التفكير في مجموعة البيانات الخاصة بك على أنها مجموعة من الكتب حيث يمكنك فقط أخذ عنصر من الأعلى ويمكنك أيضًا وضع عنصر في الجزء العلوي فقط.

جعلت العمليات الأساسية للأكوام سهلة للأطفال
كومة كتب

المكدس عبارة عن بنية بيانات خطية حيث يتم ترتيب البيانات بطريقة يمكنك من خلالها إدراج البيانات في الجزء العلوي منها فقط.

في المكدس ، يتم إخراج البيانات التي تم إدخالها أولاً في النهاية ويتم إخراج البيانات التي تم إدخالها أخيرًا أولاً. هذا هو سبب تسمية المكدس أيضًا بقائمة LIFO (Last In First Out).

3 عمليات أساسية في الأكوام

يتم تنفيذ العمليات الأساسية الثلاث التالية بشكل أساسي في المكدس:

دفع: يضيف عنصرًا في المكدس. إذا كان المكدس ممتلئًا ، فيُقال إنه حالة تجاوز.

Pop: يزيل عنصرًا من المكدس. تظهر العناصر بالترتيب الموقر الذي يتم دفعها به. إذا كانت المكدس فارغة ، فيُقال إنها حالة تحت التدفق.

جعلت العمليات الأساسية للأكوام سهلة للأطفال
ادفع وانطلق في كومة

نظرة خاطفة: إرجاع العنصر العلوي للمكدس.

تنفيذ المكدس

كومة هو مفهوم مفيد للغاية يمكن للمبرمج استخدامه لمصلحته. هل سبق لك أن طبقته في التعليمات البرمجية الخاصة بك حتى الآن؟ ليس الأمر بهذه الصعوبة كما تعتقد. دعونا نتصفح خصائصه وننفذها في الكود.

يمكن تنفيذ كومة بطريقتين:

  • باستخدام مجموعة مصفوفة
  • استخدام القائمة المرتبطة

تنفيذ المكدس باستخدام المصفوفة

المصفوفة هي واحدة من أبسط الحاويات التي توفر وصولاً عشوائيًا للمستخدمين بناءً على الفهارس. لكن لا يمكننا الوصول إلى أي عنصر من عناصر المكدس في أي موضع. لهذا السبب نحتاج إلىتعيين الفهرس كأعلى ثم الوصول إلى العنصر الموجود في أعلىالفهرس فقط.

int stack[10];
int top = -1;

هنا ، 10 هي سعة محددة مسبقًا للمكدس. يمكنك كتابة رمز لخطأ تجاوز سعة المكدس ، إذا حاول المستخدم تجاوز هذه السعة.

الشيء الثاني الذي يجب ملاحظته هنا هو أن القمة = -1 ، مما يعني أن المكدس فارغ (لأن الفهرس في المصفوفة يبدأ من 0. الفهرس 0 يعني الموضع 1).

يتم تنفيذ كومة باستخدام الكود التالي:

struct stack
{
	int arr[capacity];
	int top;
}

عملية دفع

لإدراج عنصر جديد يتم إدراجه في المكدس ، يتم تنفيذ الخطوات التالية:

  • يتم زيادة قيمة القمة بمقدار 1.
  • يتم وضع القيمة في الأعلى.

سيكون رمز عملية الدفع:

void push(int item)
{
    if ( top == capacity - 1 )
        cout << "Stack overflow!" ;
    else
    {
        top = top + 1;
        arr[top+1] = item;
    }
}

عملية POP

لإزالة عنصر من المكدس ، يتم تنفيذ الخطوات التالية

  • تتم إزالة العنصر العلوي.
  • تم تقليل قمة القيمة بمقدار 1.

سيكون رمز عملية البوب:

void pop()
{
    if ( top == -1 )
        cout << "Stack is empty!";
    else
		cout << arr[top];
        top = top - 1
;
}

عملية خاطفة

تصل عملية النظرة الخاطفة (النظرات الخاطفة) إلى العنصر الموجود أعلى المكدس. سيكون رمز عملية النظرة الخاطفة هو:

int peek()
{
    if ( top == -1 )
    {
        cout << "Stack is empty!";
    }
    else 
        return arr[top];
}

تنفيذ المكدس باستخدام القائمة المرتبطة

في القائمة المرتبطة هناك طرفان – الرأس والذيل. أثناء تنفيذ المكدس باستخدام القائمة المرتبطة ، يتم أخذ الرأسكأعلى المكدس.

بادئ ذي بدء ، يتم تنفيذ القائمة المرتبطة باستخدام الكود التالي:

struct ListNode{
    int val;
    ListNode *next;
}

الآن يتم استخدام هذه القائمة المرتبطة لتنفيذ المكدس.

struct Stack{
    int capacity;
    struct ListNode{
        int val;
        ListNode *next;
    }
}

عملية دفع

يتم الاحتفاظ بنفس الخصائص على النحو الوارد أعلاه مع ميزة إضافية لا داعي للقلق بشأن امتلاء المكدس. سيكون رمز عملية الدفع:

void push(int item)
{
    ListNode temp = ListNode(item)
;
    temp->next = head
;
    head = temp
;
}

عملية POP

حيث يتم تمثيل القمة بواسطةالرأس في هذا التنفيذ. الفكرة الأساسية لتنفيذ عملية البوب ​​هي جعل العنصر الثاني هو الرأس. سيكون رمز عملية الدفع:

void pop()
{
    if ( head == NULL )
        cout << "Stack is empty!";
    else
        head = head->next;
}

قد يُطلب منك إلغاء تخصيص العقدة المنبثقة لتجنب تسرب الذاكرة.

عملية خاطفة

يتم تنفيذ عملية النظرة الخاطفة باستخدام القائمة المرتبطة بشكل مباشر. سيكون رمز عملية النظرة الخاطفة هو:

int peek()
{
    if ( head == NULL )
    {
        cout << "Stack is empty!";
        return -1;
    }
    else
        return head->val;
}

تطبيقات بنية البيانات المكدسة

فيما يلي بعض تطبيقات المكدس في علوم الكمبيوتر:

  • آليات “التراجع” و “الإعادة” في برامج تحرير النصوص.
  • الميزات الأمامية والخلفية في متصفحات الويب.
  • تحقق من وجود أقواس متوازنة في تقييم التعبير والتعبير.
  • الاعراب النحوي.
  • تستخدم أنظمة التشغيل مكدسًا لإدارة الذاكرة.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>