لبياناتكل ا هيا/ المكدسمعة الكوفة جا/ 2102 ا. م. د. لعباديل خضير ا نضا1 لثانيفصل ا ال المكدسStack 1.2 قدمة الم: لبياناتكل ا هياستقيم بخط م لعناصر تنظم تجميع هي) موصول القوائم الفات وربما المصفو مثل( .. هياكل بيانات خطيلطابور هي المكدس وا ةنظملبيانات م حيث ان ا ة بشكل خطي, ز المكدس ويمتاطبيقات بت ةد المتعد ةمل ع الع ان تسهل شانها التي منزيد من كفائتب وتلحاسو لى ا ة. 2.2 المكدس: تعامل معهات واللبياناصة لخزن ا هو طريقة خا, و هو نسخ ةدة محدوفاتن المصف م, صر الجديدةلعنا اية واحد نهاكدس منن المكدس او تحذف مف الى المن تضامكن ا م ة, فهو مستودعف سيخرج اوخر عنصر يضات حيث ان ا بيانا. و يتبعمكدس هيكلية ا الا هياكلدعى حينهفة وياديا كمصفوثل م ان يمرا ويمكنرج اخي خاداخل او ل المستقرةلبيانات اstatic data structure وفاتت المصفندها سيرث جميع صفا وع, ن الممكن او مناميكيةت الديلبياناكل ادعى هيالة وية موصون يمثل كقائم اdynamic data structure وسيمتلك جميع خواص القوة والحذفضافت امكدس فان عمليا القة تمثيلظر عن طريلة وبغض الن الموصو ائمى المكدس فقط تحدث في اعل. شكل2.2 : نماذج تصف ال مكدسبة الش عند كتالبياناتكل المكدس هيادة ا يستخدم عا ف رة. مبدأ المكدس الحقيقة بسيط في, يجعلة والذيابة شفرتة حتى ابسط لكت. ذه ال افرض ه حالة, سة كتب موضوع لديك خم ةلة فوق بعضها على طاو البعض( شكل2.2 ) ادس لهاضيف كتاب س ان تذا رغبت فا, ادسب السلكتاكيد ستضع ا تعمل بكل تاذا فما فوق الكتب الخمس, لديك التيب الستلث من الكتلثاب الكتا ان تسحب اذا لو اردتن ما ا, عليك ان هناب الكتا تزيل اى ثم الذي عل بعده وهكذا لحينالث فيب الثلكتا ان يصبح ا ا علىحصول ليتسنى لك ال
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
نضال خضير العبادي. د.م.ا 2102/ جامعة الكوفة المكدس/ هياكل البيانات
1
الفصل الثاني
Stackالمكدس
:المقدمة 1.2
)مثل المصفوفات وربما القوائم الموصول (هي تجميع لعناصر تنظم بخط مستقيم هياكل البيانات
ويمتاز المكدس , بشكل خطي ةحيث ان البيانات منظم ةالمكدس والطابور هي هياكل بيانات خطي..
.ةلى الحاسوب وتزيد من كفائتالتي من شانها ان تسهل العمل ع ةالمتعدد ةبتطبيقات
, من المصفوفات محددة ةهو نسخو, هو طريقة خاصة لخزن البيانات والتعامل معها: المكدس 2.2
فهو مستودع ,ةممكن ان تضاف الى المكدس او تحذف من المكدس من نهاية واحد العناصر الجديدة
.بيانات حيث ان اخر عنصر يضاف سيخرج اوال
لداخل اوال خارج اخيرا ويمكن ان يمثل ماديا كمصفوفة ويدعى حينها هياكل المكدس هيكلية ا يتبعو
او من الممكن , وعندها سيرث جميع صفات المصفوفات static data structureالبيانات المستقرة
وسيمتلك dynamic data structureان يمثل كقائمة موصولة ويدعى هياكل البيانات الديناميكية
ائم الموصولة وبغض النظر عن طريقة تمثيل المكدس فان عمليات االضافة والحذف جميع خواص القو
. تحدث في اعلى المكدس فقط
مكدسالنماذج تصف : 2.2شكل
والذي يجعلة ,في الحقيقة بسيط المكدس مبدأ. رةفيستخدم عادة المكدس هياكل البيانات عند كتابة الش
على طاولة فوق بعضها ةلديك خمسة كتب موضوع, حالةافرض هذه ال. حتى ابسط لكتابة شفرتة
فماذا تعمل بكل تاكيد ستضع الكتاب السادس , فاذا رغبت ان تضيف كتاب سادس لها (2.2شكل ) البعض
هنا عليك ان ,االن ماذا لو اردت ان تسحب الكتاب الثالث من الكتب الست التي لديك, فوق الكتب الخمس
ليتسنى لك الحصول علىاألان يصبح الكتاب الثالث في وهكذا لحين بعده على ثم الذيتزيل الكتاب األ
نضال خضير العبادي. د.م.ا 2102/ جامعة الكوفة المكدس/ هياكل البيانات
2
فوق او )عليه ومن ثم اعادة الكتب التي ازلتها الى مكانها وحسب ترتيبها اي ان تضعها كتاب بعد االخر
. (الكتب االخرى علىأ
ر كلمة مهمة في على المكدس هو اكثأنعم الن ,ةعلى بحروف غامقاني اشرت الى كلمة األ, هناالحظ
. على فقطالبيانات تخزن في المكدس بحيث ان اضافة البيانات اليسمح بها اال من األ. التعامل مع المكدس
.على المكدس فقطأان اضافة وحذف البيانات اليسمح به اال من
:التي تجري على المكدس هي األساسية العمليات
.على المكدسأديد الى وهي عملية اضافة عنصر ج :Push او االضافة الدفع
.على المكدسأوهي عملية سحب عنصر من :Pop او الحذف السحب
حيث نالحظ ان االضافة تتم من اعلى المكدس 2-2موضحة بالشكل ( االضافة والحذف) هذه العمليات
الحظ هنا في حالة االضافة يجب .. وكذلك فان الحذف يتم من اعلى المكدس, وعنصر واحد في كل مرة
اما في حالة الحذف , مع مراعاة ان جميع عناصر المكدس هي من ذات النوع, حدد القيمة المضافةان ت
فاننا نحذف العنصر باعلى المكدس بغض النظر عن قيمتة ويمكن فقط تقليل قيمة مؤشر اعلى المكدس
.بمقدار واحد ليتم حذف العنصر دون الحاجة لمعرفة قيمتة
يمثل عنوان العنصر الذي في اعلى )موقع اعلى عنصر بالمكدس كذلك الحظ وجود مؤشر يشير الى
(.المكدس بالذامرة المخصصة للمكدس
يوضع عمليات االضافة والحذف من المكدس(: 2-2)شكل
:تطبيقات المكدس 1.2
:بعض تطبيقات المكدس ةادنا. ةالمكدس له تطبيقات كثير
لذلك اذا حدث وان تم ,ساس بعملية التنفيذسيكون له الدور اال المعالج برنامج فان اي ذينفتعند 1.2.2
استدعاء دالة معينة في البرنامج فان المعالج سيتوقف عن اكمال تنفيذ البرنامج حسب تسلسل
نضال خضير العبادي. د.م.ا 2102/ جامعة الكوفة المكدس/ هياكل البيانات
3
الى ذات الموقع الذي تفرع ةثم العود ةويتفرع الكمال تنفيذ الدال البرنامج االيعازات او االوامر في
تكون له االمكانية يجب ان المعالج فانفي هذه الحالة , زاتمنه الكمال التنفيذ حسب تسلسل االيعا
لذلك فان العنوان , في الموقع الذي تفرع منه لتنفيذ الدالة التي تم استدعائها الى البرنامج ةلعودل
ةاي االيعاز الذي كان من المفروض ان ينفذ قبل ان يتفرع المعالج الى تنفيذ الدال) الحالي للبرنامج
سيتم ةفان العنوان الذي تم خزن ,المعالج من تنفيذ الدالة نتهييوعندما ,ليتم حفظة مكدسسيدفع الى ال
.ليوجهة المعالج اليه الكمال التنفيذ من المكدس سحبة
المكدس يستخدم ايضا بواسطة المترجمات بعملية .المكدس يدعم طريقة االستدعاء الذاتيو 1.2.1
ستخدم لخزن عناوين االعادة بسلسلة من يكذلك ,ةالماكنمعالجة او تقييم التعابير وتوليد شفرة لغة
.طرق االستدعاءات خالل تنفيذ البرنامج
مثال الحاسبات الشخصية الحديثة ,يستخدم المكدس بشكل كبير في انظمة الحواسيب الحديثة 1.2.2
ستخدم في التصميم االساس لنظام التشغيل يحيث , بوتستخدم المكدس على مستوى معمارية الحاس
فان , ومن بين االستخدامات االخرى ,راض تنفيذ المقاطعة واستدعاء دوال نظام التشغيلالغ
ولغة جافا نفسها Java virtual machineالمكدس يستخدم لتشغيل او تنفيذ ماكنة جافا االفتراضية
انظمة , المكدس في كل مكان. من المبرمج ةوالذي من الممكن استخدام, لديها صنف يسمى المكدس
اسوب التي تعتمد على المكدس هي واحدة من التي تخزن المعلومات بشكل مؤقت في المكدس الح
.مسجالت وحدة المعالجة المركزية منبدال
على سبيل المثال افرض انك ترغب , كبيرة جدا أعدادقوم بعملية جمع ت كنفرض ان, اخر تطبيق 1.2.2
بجمع العددين
o 353,120,457,764,910,452,008,700
o 234,765,000,129,654,080,277
ةصحيحالد اعدمن نوع االاوال الحظ التالي انه من الصعب تمثيل اي من العددين كمتغير
(integer) هذه المشكلة باالمكان حلها وذلك . من استيعاب هذا العدد الكبير ةالن هذا المتغير اليمكن
بعدها تجرى عملية االضافة او , نهم بمكدسينزويتم خ, بمعاملة العدد كسلسلة رمزية من االرقام
.ينالجمع بسحب ارقام من المكدس
افرض لديك التعبير التالي, يجاد نتيجة تعبير حسابيالالمكدس مفيد : ايجاد نتيجة تعبير حسابي 1.2.2
5 * 3 +2 + 6 * 4
نتيجة بعد ذلك تخزن ال, 3في 5اوال نتيجة حاصل ضرب ,ممكن ايجاد نتيجة التعبير وذلك بايجاد
االن اجري . Aواخزن النتيجة بالمتغير Aالى المتغير 2ة الرقم فثم قم باضا, Aفي متغير مثال
الى Aعند ذلك ستنتهي العملية باضافة . Bواخزن الناتج بالمتغير 4في 6عملية الضرب للرقمين
B واترك النتيجة النهائية بالمتغيرA .
A = 15 (5 3 *)
A = 15 + 2 ( 15 2 +)
= 17
B = 6 * 4 ( 6 4 *)
= 24
A = 17 + 24 ( 17 24 +)
= 41
:باالمكان كتابة هذه العمليات المتسلسلة كمايلي
نضال خضير العبادي. د.م.ا 2102/ جامعة الكوفة المكدس/ هياكل البيانات
4
5 3 * 2 + 6 4 * +
سنوضح .أعاله على النحو المبينيتم تقييمها و ( postfix تعبير العالمة الالحقة) التدوين ف هذاويعر
.المكدس باستخدام التدوين إنشاء هذا كيف يمكن قريبا
Algebraic Expressionةالتعابير الجبري 1.2
عوامل رياضيةيحتوي على معامالت وهو ترتيب رياضي :التعبير الجبري.
والتي تجرى عليها العمليات الرياضية( وحدة بيانات )هي كميات :المعامالت.
الخ.. 22, 34, 2, -2 او ثوابت مثل x, y, zالمعامالت ممكن ان تكون متغيرات مثل و
مثال على , هي رموز تدل على عمليات رياضية او منطقية بين المعامالت: العوامل الرياضية
=> ,^ ,/ ,* ,‐ ,+ بعض العوامل الشائعة
ان نكتب تعبير مثل االن فاننا يمكننا ,اذا مااخذنا هذين التعريفين للعوامل والمعامالت
x + y * z
:وهي. التعابير الرياضية أنواع من ثالث هناك واقعا
على التعامل معه في الرياضياتوهذا هو النوع الذي اعتدنا : infix تعبير العالمة القياسية 1.2.2
بين المعاملين( العالمة الرياضية)حيث يكون موضع العامل الرياضي ,منذ االيام االولى للمدرسة
مثل ,الذين من المفروض ان تجرى عليهم العملية الرياضية وفقا لهذا العامل
A + B
اضي تابع او الحق الى في هذا التعبير يكون العامل الري: Postfix ةالالحق تعبير العالمة 1.2.1
,الذين من المفروض ان تجرى عليهم العملية الرياضية وفقا لهذا العامل المعاملين اي بعد المعاملين
مثل
A B +
هنا يكون مكان العامل الرياضي قبل المعاملين الذين من : Prefix ةالسابق تعبير العالمة 1.2.2
مثل, لعاملالمفروض ان تجرى عليهم العملية الرياضية وفقا لهذا ا
+ A B
باستخدام ترتيب ( evaluateيقيم)تستخرج نتيجتة اليمكن ان القياسي تعبير العالمةالحظ ان
فان العالمات الرياضية داخل , على كل حال. العوامل الرياضية من اليسار الى اليمين داخل التعبير
لتعبير عليه فان التقييم او الحساب ,دائما تكون في مكان التقييم الصحيح ةالالحق العالمةتعبير
من ةالى مايكافئ تعبير العالمة القياسيةاالولى هو تحويل .. يعمل او ينجز بخطوتين العالمة القياسي
سوف نرى ذلك في هذا . تعبير العالمة الالحقةتتضمن حساب ةالثاني ةالخطو تعبير العالمة الالحقة
دعنا اوال نختبر العملية االساسية للتحويل , كال الخطوتين كيف ان المكدس مفيد بالتعامل مع, الفصل
++Cباستخدام لغة البرامج الالزمة لتطبيقات المكدسبعض 1.8
في مكدس (push, pop ) (الدفع والسحب) النجاز عمليتي ++Cاكتب دالة باستخدام 1.8.2
.يمثل كمصفوفة
نضال خضير العبادي. د.م.ا 2102/ جامعة الكوفة المكدس/ هياكل البيانات
20
void PUSH ( int Stack [ ], int &Top, int Val ) { if ( Top = = size -1 ) { cout << “ Stack Overflow ” ; exit(0) ; } else { Top + + ; Stack [ Top ] = Val ; } } // end PUSH function void POP ( int Stack [ ] , int & Top ) { int R ; if ( Top = = -1 ) { cout<< “ Stack Underflow” ; exit(0) ; } else { R = Stack [ Top ] ; Top - - ; } } // end POP function
ل الدوال اعالة لتكون صنف كاملااكم 1.8.1
class Stack { int Data [ 10] ; int Top ; public: Stack ( ) { Top = -1; } void PUSH ( ) ; // to push an element into the stack . void POP ( ) ; // to pop an element from the stack. }; void Stack :: PUSH ( ) { int Val ;
نضال خضير العبادي. د.م.ا 2102/ جامعة الكوفة المكدس/ هياكل البيانات
21
cout <<”Enter the value to be push.” ; cin>> Val ; if ( Top = = 9 ) { cout << “ Stack Overflow”; exit ( 0) ; } else { Top + + ; Data [ Top ] = Val ; } } void Stack :: POP( ) { int R ; if ( Top = = -1 ) { cout<<”Stack Underflow”; exit (0) ; } else { R = Data [Top ] ; Top - - ; } }
برنامج يستخدم لتحويل تعبير العالمة القياسية الى تعبير العالمة الالحقة 1.8.2
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
const int size =50;
char infix[size],postfix[size],stack[size];
int top=-1;
int precedence(char ch); // العوامل افضليات على للحصول دالة
char pop(); // المكدس من عنصر لسحب الةد
نضال خضير العبادي. د.م.ا 2102/ جامعة الكوفة المكدس/ هياكل البيانات