هياكل بيانات

lool adimi • منذ 6 سنوات

تطبيقات مستخدم فيها المكدسات ؟؟

كلمات دليلية: c++

الإجابة الصحيحة

عمار الخوالدة • منذ 6 سنوات

ان كنت تقصد بالمكدسات (Stack)

فله العديد من التطبيقات مثل محاكاة عملية الـ Recursion للاستغناء عنها في بعض الخوارزميات، فعملية الـ Recursion تتم فعليا خلف الكواليس باستخدام Stack يقوم بتنفيذ الـ Methods بشكل متتالٍ بحيث يبدأ من آخر Method تم استدعاؤه ويبدأ بالرجوع عن طريق عمل pop لكل ميثود وارسال القيمة التي ترجعها هذه الميثود الى سابقتها، يمكن محاكاة هذه العملية بالكامل باستخدام Stack للاستغناء عن ال Recursion وجعل الخوارزمية تعمل باستخدام الدوران Iterative، فتخيل مثلا أنك ستقوم باستخدام خوارزمية Quick Sort على array كبيرة جدا  (1000) عنصر مثلا، غالبا ستحصل على خطأ أثناء التنفيذ اسمه Stackoverflow وهو يحصل بسبب امتلاء الStack في الذاكرة عند استخدام Recursion، لذلك وباستخدام الـ Stack تستطيع اعادة كتابة هذه الخوارزمية أو غيرها عن طريق تحويلها إلى Iterative algorithm باستخدام Stack من تعريفك، مع تعريف الستاك بحجم يناسب البيانات الموجودة لديك.

 

إضافة إلى ذلك توجد خوارزميات معروفة تعتمد على Stack، مثل معرفة صلاحية الأقواس، بحيث يتم ادخال كل قوس ايسر ( في حال كانت الكتابة باللغة الانجليزية) إلى الستاك باستخدام push. وهكذا إلى أن يجد قوسا أيمنا فيقوم بعملية Pop، ويستمر على هذه الحال إلى أن تنتهي الجملة التي يتحقق منها، ان كان كل قوس ايسر له قوس ايمن يغلقه بشكل صحيح فيجب أن يصبح الستاك  في النهاية فارغا.

 

وتستخدم في تحويل العمليات الحسابية إلى أشكال أخرى ليتمكن الحاسوب من حسابها مع مراعاة الأولويات، مثل خوارزمية Infix to postfix.

 

وتستخدم في أي عملية ستقوم بتنفيذ إجراءات معينة ثم إعادة تنفيذها لكن بشكل معكوس، بحيث يبدأ من آخر شيء قام بمعالجته سابقا، مثل ما يحصل في تشغيل الأنظمة، حيث يتكون نظام التشغيل من عدة طبقات مثل kernel layer و Applications layer وغيرها. فعند التشغيل سيبدأ بتشغيل الطبقات الأهم، لكن عند اطفاء الجهاز سيبدأ من أعلى طبقة تظهر للمستخدم نزولا إلى آخر طبقة، فيستخدم ال Stack في مثل هذه العمليات ( تستطيع أن تشبها بأنك تقوم بعمليات معينة ثم عمل undo لهذه العمليات عند الانتهاء، فانت ترجع رجوعا إلى الخلف وهذا يتم عن طريق الــ Stack ).

 

كما يستخدم في نوع آخر من هياكل البيانات ويسمى Graph حيث يستخدم في بعض خوارزميات التنقل بين الـ Nodes الخاصة بالـ Graph مثل خوارزمية Depth First Search.

 

الإجابات (2)

عمار الخوالدة • منذ 6 سنوات
الإجابة الصحيحة

ان كنت تقصد بالمكدسات (Stack)

فله العديد من التطبيقات مثل محاكاة عملية الـ Recursion للاستغناء عنها في بعض الخوارزميات، فعملية الـ Recursion تتم فعليا خلف الكواليس باستخدام Stack يقوم بتنفيذ الـ Methods بشكل متتالٍ بحيث يبدأ من آخر Method تم استدعاؤه ويبدأ بالرجوع عن طريق عمل pop لكل ميثود وارسال القيمة التي ترجعها هذه الميثود الى سابقتها، يمكن محاكاة هذه العملية بالكامل باستخدام Stack للاستغناء عن ال Recursion وجعل الخوارزمية تعمل باستخدام الدوران Iterative، فتخيل مثلا أنك ستقوم باستخدام خوارزمية Quick Sort على array كبيرة جدا  (1000) عنصر مثلا، غالبا ستحصل على خطأ أثناء التنفيذ اسمه Stackoverflow وهو يحصل بسبب امتلاء الStack في الذاكرة عند استخدام Recursion، لذلك وباستخدام الـ Stack تستطيع اعادة كتابة هذه الخوارزمية أو غيرها عن طريق تحويلها إلى Iterative algorithm باستخدام Stack من تعريفك، مع تعريف الستاك بحجم يناسب البيانات الموجودة لديك.

 

إضافة إلى ذلك توجد خوارزميات معروفة تعتمد على Stack، مثل معرفة صلاحية الأقواس، بحيث يتم ادخال كل قوس ايسر ( في حال كانت الكتابة باللغة الانجليزية) إلى الستاك باستخدام push. وهكذا إلى أن يجد قوسا أيمنا فيقوم بعملية Pop، ويستمر على هذه الحال إلى أن تنتهي الجملة التي يتحقق منها، ان كان كل قوس ايسر له قوس ايمن يغلقه بشكل صحيح فيجب أن يصبح الستاك  في النهاية فارغا.

 

وتستخدم في تحويل العمليات الحسابية إلى أشكال أخرى ليتمكن الحاسوب من حسابها مع مراعاة الأولويات، مثل خوارزمية Infix to postfix.

 

وتستخدم في أي عملية ستقوم بتنفيذ إجراءات معينة ثم إعادة تنفيذها لكن بشكل معكوس، بحيث يبدأ من آخر شيء قام بمعالجته سابقا، مثل ما يحصل في تشغيل الأنظمة، حيث يتكون نظام التشغيل من عدة طبقات مثل kernel layer و Applications layer وغيرها. فعند التشغيل سيبدأ بتشغيل الطبقات الأهم، لكن عند اطفاء الجهاز سيبدأ من أعلى طبقة تظهر للمستخدم نزولا إلى آخر طبقة، فيستخدم ال Stack في مثل هذه العمليات ( تستطيع أن تشبها بأنك تقوم بعمليات معينة ثم عمل undo لهذه العمليات عند الانتهاء، فانت ترجع رجوعا إلى الخلف وهذا يتم عن طريق الــ Stack ).

 

كما يستخدم في نوع آخر من هياكل البيانات ويسمى Graph حيث يستخدم في بعض خوارزميات التنقل بين الـ Nodes الخاصة بالـ Graph مثل خوارزمية Depth First Search.

 

Ali Majrashi • منذ 6 سنوات

يعطيه العافيه عمار على الاجابة وحاب ازيد عليها هنا مقال يوضح هياكل البيانات: Stacks في جافا وهي نفس المفهوم في c++ ممكن تفيدك وبعض استخداماتها 

https://3alam.pro/abather/articles/stack

 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !