12
˽ -1 ΚѧΤΒϟ search : ѧλϮϟ ΪѧμϘΑ ϲϧΎѧϴΒϟ ϞѧϜϴϬϟ ϞѧΧΩ ΚѧΤΑ ΔѧϴϠϤϋ ϲѧϫ ήѧμϨϋ ϰѧϟ· ϝϮ ) ΓΪѧϘϋ ( ΡΎѧΘϔϤϟ ϞѧϘΣ ϰϤѧδϳ ϝϮѧϘΤϟ ΪѧΣ ΔѧϤϴϗ ΐѧΟϮϤΑ Ϫѧϴϓ Ϧϴѧόϣ ) key field ( ϖѧϓϭ ϢΘѧϳ ΚѧΤΒϟ ϥ ϱ ϥϮϨόϟ βϴϟ ϭ ΕΎϳϮΘΤϤϟ . -2 ϝΎΧΩ· ) ΔϓΎο· ˶ Addition : ήμϨϋ ΔϓΎοϹ ) ΓΪϘϋ ( ΐѧϟΎρ ϞϴΠѧδΗ ϞѧΜϣ ϲϧΎѧϴΒϟ ϞѧϜϴϬϟ ϰѧϟ· ΪѧϳΪΟ ΔγέΪϤϟ ϲϓ ΪϳΪΟ . -3 ϑάΣ Deletion : ήμϨϋ ϑάΣ ) ΓΪϘϋ ( ϲϧΎϴΒϟ ϞϜϴϬϟ Ϧϣ ˬ ϯήΧ ΔγέΪϣ ϰϟ· ΐϟΎρ ϞϘϧ ϞΜϣ . -4 ΞϣΩ Merge : ΪΣϭ ϲϧΎϴΑ ϞϜϴϫ ϦϳϮϜΘϟ ήΜϛ ϭ ϦϴϠϜϴϫ ΕΎϧΎϴΑ ΞϣΩ . -5 Ϟμϓ Split : ήΜϛ ϭ ϦϴϠϜϴϫ ϰϟ· ϲϧΎϴΑ ϞϜϴϫ ΕΎϧΎϴΑ ΔΰΠΗ . -6 ΏΎδΘΣ· Counting : ϲϧΎϴΒϟ ϞϜϴϬϟ ϲϓ ΪϘόϟ ϭ ήλΎϨόϟ ΩΪϋ ΏΎδΘΣ . -7 Φδϧ Copying : δϧ ήΧ ϲϧΎϴΑ ϞϜϴϫ ϰϟ ϲϧΎϴΒϟ ϞϜϴϬϟ ΕΎϧΎϴΑ Φ . -8 ΐϴΗήΗ Sort : ήλΎϨϋ ΐϴΗήΗ ) ΪϘϋ ( ϞϘΣ ΔϤϴϗ ϖϓϭ ϲϧΎϴΒϟ ϞϜϴϬϟ ) field ( ϝϮϘΣ ΔϋϮϤΠϣ ϭ . -9 ϝϮλϮϟ Access : ήμϨϋ ϰϟ· ϝϮλϮϠϟ ΔΟΎΤϟ ΎϧΎϴΣ ΐϠτΘΗ ) ΓΪϘϋ ( ϲϧΎϴΒϟ ϞϜϴϬϟ ϲϓ ϲϧΎϴΑ ϩήϴϴϐΗ ϭ ϼΜϣ ϩέΎΒΘΧϻ νήϏ ΓΪόϟ ... Φϟ . 3 - 2 ŽŶƨưƫř Stack : ϯΪΣ· Ϧϣ ϑάΤϟϭ ΔϓΎοϹ ϲΘϴϠϤϋ ΎϬϴϓ ϢΘΗ ΔϴτΧ ΔϤΎϗ Ϧϋ ΓέΎΒϋ Ϯϫ ΔϘϠϐϣ ϯήΧϷ ΔϳΎϬϨϟ ϥϮϜΗϭ ΔϤΎϘϟ ϲΘϳΎϬϧ . ΔϓΎοϼϟ ΔΣϮΘϔϤϟ ΔϳΎϬϨϟ ΔϘϠϐϤϟ ΔϳΎϬϨϟ ήλΎϨόϟ ϰϠϋ ϱϮΘΤϳ ϩΪΠϧ Ϋ· ϞϜθϟ ϲϓ οϮϤϟ αΪϜϤϟ άΧ΄Ϩϟ C,B,A ήμϨϋ ΔϓΎο· ΪϨϋ ϭ ϞΜϣ ΪϳΪΟ D ϲΗϻΎϛ ϞϜθϟ Βμϴϟ ΔΣϮΘϔϤϟ ΔϬΠϟ Ϧϣ ΔϓΎοϹ ϥϮϜΗ ϥ ΐΠϳ : ΔϓΎοϼϟ ϑάΤϠϟ ) pop ( ) Push ( C B A D C B A

ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˺˽

-1 ΚѧѧΤΒϟsearch ѧѧλϮϟΪѧѧμϘΑϲϧΎѧѧϴΒϟϞѧѧϜϴϬϟϞѧѧΧΩΚѧѧΤΑΔѧѧϴϠϤϋϲѧѧϫήѧѧμϨϋϰѧѧϟϝϮ )ΓΪѧѧϘϋ (ΡΎѧѧΘϔϤϟϞѧѧϘΣϰϤѧѧδϳϝϮѧѧϘΤϟΪѧѧΣΔѧѧϤϴϗΐѧѧΟϮϤΑϪѧѧϴϓϦϴѧѧόϣ )key field(ϖѧѧϓϭϢΘѧѧϳΚѧѧΤΒϟϥϱ

ϥϮϨόϟβϴϟϭΕΎϳϮΘΤϤϟ -2ϝΎΧΩ)ΔϓΎο˶Addition ήμϨϋΔϓΎοϹ)ΓΪϘϋ(ΐѧϟΎρϞϴΠѧδΗϞѧΜϣϲϧΎѧϴΒϟϞѧϜϴϬϟϰѧϟΪѧϳΪΟ

ΔγέΪϤϟϲϓΪϳΪΟ -3ϑάΣDeletion ήμϨϋϑάΣ)ΓΪϘϋ (ϲϧΎϴΒϟϞϜϴϬϟϦϣˬϯήΧΔγέΪϣϰϟΐϟΎρϞϘϧϞΜϣ -4ΞϣΩ Merge ΪΣϭϲϧΎϴΑϞϜϴϫϦϳϮϜΘϟήΜϛϭϦϴϠϜϴϫΕΎϧΎϴΑΞϣΩ -5ϞμϓSplit ήΜϛϭϦϴϠϜϴϫϰϟϲϧΎϴΑϞϜϴϫΕΎϧΎϴΑΔΰΠΗ -6ΏΎδΘΣCounting ϲϧΎϴΒϟϞϜϴϬϟϲϓΪϘόϟϭήλΎϨόϟΩΪϋΏΎδΘΣ -7ΦδϧCopying δϧήΧϲϧΎϴΑϞϜϴϫϰϟϲϧΎϴΒϟϞϜϴϬϟΕΎϧΎϴΑΦ -8ΐϴΗήΗSort ήλΎϨϋΐϴΗήΗ)ΪϘϋ(ϞϘΣΔϤϴϗϖϓϭϲϧΎϴΒϟϞϜϴϬϟ)field(ϝϮϘΣΔϋϮϤΠϣϭ -9ϝϮλϮϟAccess ήμϨϋϰϟϝϮλϮϠϟΔΟΎΤϟΎϧΎϴΣΐϠτΘΗ)ΓΪϘϋ(ϲϧΎϴΒϟϞϜϴϬϟϲϓϲϧΎϴΑ

ϩήϴϴϐΗϭϼΜϣϩέΎΒΘΧϻνήϏΓΪόϟΦϟ

3-2ŽŶƨưƫřStack ϯΪΣϦϣϑάΤϟϭΔϓΎοϹϲΘϴϠϤϋΎϬϴϓϢΘΗΔϴτΧΔϤΎϗϦϋΓέΎΒϋϮϫ

ΔϘϠϐϣϯήΧϷΔϳΎϬϨϟϥϮϜΗϭΔϤΎϘϟϲΘϳΎϬϧ ΔϓΎοϼϟ

ΔΣϮΘϔϤϟΔϳΎϬϨϟ

ΔϘϠϐϤϟΔϳΎϬϨϟ ήλΎϨόϟϰϠϋϱϮΘΤϳϩΪΠϧΫϞϜθϟϲϓοϮϤϟαΪϜϤϟάΧ΄ϨϟCBA ήμϨϋΔϓΎοΪϨϋϭ

ϞΜϣΪϳΪΟD ϲΗϻΎϛϞϜθϟΒμϴϟΔΣϮΘϔϤϟΔϬΠϟϦϣΔϓΎοϹϥϮϜΗϥΐΠϳ ΔϓΎοϼϟ ϑάΤϠϟ

)pop ( )Push (

C B A

D C B A

kholood alharthi
kholood alharthi
المحاضرة الرابعة
kholood alharthi
مقدمة في تراكيب البيانات والخوارزميات

˺˾

ΔϬΠϟβϔϧϡΪΨΘδϧϥΐΠϳαΪϜϤϟϦϣήμϨϋϑάΣΪϨϋϭ ςѧϘϓΔΣϮΘϔϤϟˬάѧΧ΄ϧϥϊϴτΘѧδϧϱ

ήμϨόϟ)D (ήѧμϨόϟάѧΧ΄ϧϢΛ)C(ήѧμϨόϟάѧΧ΄ϧϥϊϴτΘѧδϧϻϭϊΑΎѧΘΘϟΎΑ)C(ήѧμϨόϟάѧΧ΄ϧϥϞѧΒϗ)D (ήѧѧμϨόϟϥΔѧѧψΣϼϣϊѧѧϣ)D (ήѧѧϴΧϞѧѧΧΩ ΓέΎѧѧΒόϟΎΑαΪѧѧϜϤϟϞѧѧϤϋκѧѧΨϠϧϥϊϴτΘѧѧδϧάѧѧϬϟϭ

ΔϴΗϵ) ΝήΨϳϦϣϝϭϞΧΪϳϦϣήΧ ( )LIFO(Last In First Out άΧϦϜϤϳϻϪϧΎϤϛ)ϑάΣ (ϑάѧΣΪѧόΑϻαΪѧϜϤϟήλΎϨϋςγϭϦϣήμϨϋ)ΝήѧΧ (ήѧλΎϨόϟ

ΪѧΑϡΪΨΘѧδΗϻϭΔѧϘϠϐϣϯήѧΧϻΔѧϳΎϬϨϟϥϰѧϠϋΪѧϴϛ΄ΘϟϊѧϣΔѧΣϮΘϔϤϟΔϳΎϬϨϟΔϬΟϦϣϪϘΒδΗϲΘϟ ϭαΪѧѧϜϤϟϰѧѧϟΔϓΎѧѧοϹΔѧѧϴϠϤϋϰϤѧѧδΗ)push(ϭ)Insertion(αΪѧѧϜϤϟϦѧѧϣϑάѧѧΤϟΔѧѧϴϠϤϋϭ)pop (

ϭ)Deletion(

ϝΎΜϣ νήϔϧ)S (ϲϨόΗ)Stacking(ϭαΪϜϤϟϰϟήμϨϋΔϓΎοΔϴϠϤόϟΰϣήΗϱ)U(ϲϨόΗ) Unstacking (αΪϜϤϠϟΕϼΧΪϤϟΔϋϮϤΠϣΖϧΎϛϭαΪϜϤϟϦϣήμϨϋϑάΣΔϴϠϤόϟΰϣήΗϱ

ΐϴΗήΘϟΎΑRNYBM ˬϦϴϤϴϟϦϣΔϴΗϵΕΎϴϠϤόϟϦϣΔϠδϠγϞϛάϴϔϨΗΪόΑΕΎΟήΨϤϟϲϫΎϣϦϴΑ ϣϦϴϤϴϟϰϟέΎδϴϟϦ -SSUUSUSUSU Ώ-SSSUSUUSUU

ϞΤϟ ϥϮϜϳήμϨόϟέΎϴΘΧϥΎϓαΪϜϤϟϰϟήμϨϋϝΎΧΩΔϴϠϤϋάϴϔϨΗΪϨϋϪϧΕϼΧΪϤϟΐϴΗήΘΑΪμϘϳ

άΧ΄ϧϱϊΑΎΘΘϟΎΑΕϼΧΪϤϟϚϠΗϦϣM ϢΛϻϭ B ˬάϜϫϭˬήμϨόϟάΧϊϴτΘδϧϻϭN ϞΒϗϪϟΔϘΑΎδϟήλΎϨόϟ

- R N Y B M ΕϼΧΪϤϟ

U S U S U S U U S S ΕΎϴϠϤόϟΔϠδϠγ R N Y M B ΕΎΟήΨϤϟ

Ώ - R N Y M B ΕϼΧΪϤϟ

U U S U U S U S S S ΕΎϴϠϤόϟΔϠδϠγ M R B N Y ΕΎΟήΨϤϟ

ϝΎΜϣ ϧΎϛΫΐϴΗήΘΑαΪϜϣΕϼΧΪϣΔϋϮϤΠϣΖ54321 ϦϣΎϳϦϴΑˬέΎδϴϟϰϟϦϴϤϴϟϦϣαΪϜϤϟϞϤϋΏϮϠγϖϓϭΔΤϴΤλϩΎϧΩΔϨϴΒϤϟΕΎΟήΨϤϟ ) ϰϟέΎδϴϟϦϣΕΎΟήΨϤϟΐϴΗήΗ

ϦϴϤϴϟ( - 2 4 5 3 1 Ώ-4 2 3 1 5 Ν- 4 5 1 2 3 Ω-4 3 5 1 2 ϞΤϟ ƕźƠƫř ΔΑϮϠτϤϟΕΎΟήΨϤϟ )24531(

˺˿

ήμϨόϟΝήΧϻ)2 (ϦϳήμϨϟϝΎΧΩϻϭΐΠϳ21 ϮϫΕΎϴϠϤόϟάϴϔϨΗϞδϠδΗϥϱSSU ϥϱΒμΗαΪϜϤϟΕΎϳϮΘΤϣ

ήμϨόϟΝήΧϻϭ)4 (ήμϨόϟΪόΑ)2 (ϦϳήμϨόϟϝΎΧΩΐΠϳ43 ΕΎϴϠϤόϟάϴϔϨΗϞδϠδΗϥϱϫΔϟΎΤϟϩάϫϲϓϮSSUSSU αΪϜϤϟΕΎϳϮΘΤϣΒμΗϭ

3 1

ήμϨόϟΝήΧϹϭ )5 (ήμϨόϟΪόΑ)4 (άϴϔϨΗϞδϠδΗϥϱϪΟήΧϢΛϻϭϪϟΎΧΩΐΠϳ

ϥϮϜϳΕΎϴϠϤόϟSSUSSUSU αΪϜϤϟΕΎϳϮΘΤϣΒμΗϭ

3 1

ΝήѧѧΧϦѧѧϜϤϳΔѧѧϴϟΎΤϟαΪѧѧϜϤϟΔѧѧϟΎΣϖѧѧϓϭ ϦϳήѧѧμϨόϟ 1ϢѧѧΛ3 άѧѧϴϔϨΗϞѧѧδϠδΗϥϱϊΑΎѧѧΘΘϟΎΑ

ϮѧѧϫΕΎѧѧϴϠϤόϟSSUSSUSUUU ϞѧѧδϠδΗϥΎѧѧϛΫΕΎѧѧΟήΨϤϟϩάѧѧϫϞѧѧΜϣϰѧѧϠϋϝϮѧѧμΤϟϦѧѧϜϤϳΫΕϼΧΪϤϟΐϴΗήΘΑϡΰΘϟϷϊϣΓήϴΧϷΔϐϴμϟΎΑΕΎϴϠϤόϟ

śƕźƠƫř ΔΑϮϠτϤϟΕΎΟήΨϤϟ)42315( ήѧѧμϨόϟΝήѧѧΧϻ)4 (ѧѧλΎϨόϟϝΎѧѧѧΧΩϻϭΐѧѧΠϳή4321 ΕΎѧѧѧϴϠϤόϟΔϠѧѧδϠγϖѧѧϓϭSSSSU

αΪϜϤϟΕΎϳϮΘΤϣΒμΗϭ

3 2 1

1

˺

ήѧѧμϨόϟΝήѧѧΧϻϭ)2 (ήѧѧμϨόϟΝήѧѧΧΐѧѧΠϳΔѧѧϴϟΎΤϟϪѧѧΘϟΎΤΑαΪѧѧϜϤϟϦѧѧϣ)3 (άѧѧϫϥΎѧѧϓάѧѧϟϪѧѧϠΒϗΕΎΟήΨϤϟϦϣϞδϠδΘϟ)42315(ϩάϴϔϨΗϦϜϤϳϻ

ũƕźƠƫř ΔΑϮϠτϤϟΕΎΟήΨϤϟ)45123(

ϦϳήμϨόϟΝήΧϦϜϤϳ54 ΔϴΗϵΕΎϴϠϤόϟΔϠδϠγάϴϔϨΗΪόΑ 5 4 3 2 1 ΕϼΧΪϤϟ

U S U S S S S ΔϠδϠγ ΕΎϴϠϤόϟ 5 4 ΕΎΟήΨϤϟ

αΪϜϤϟΕΎϳϮΘΤϣΒμΘγϭ

3 2 1

ήμϨόϟΝήΧέάόΘϴγΎϨϫϭ)1 (ϦϳήμϨόϟϞΒϗ)23 (ΕΎΟήΨϤϟϞδϠδΗϥΎϓάϟ)45123 (

ϴΤλήϴϏ ƫřŵƕźƠ ΔΑϮϠτϤϟΕΎΟήΨϤϟ)43521(

ϲΗϵϞδϠδΘϟΎΑΝήΧϹϭϝΎΧΩϹΕΎϴϠϤϋάϴϔϨΗΪϨϋΕΎΟήΨϤϟϩάϫϰϠϋϝϮμΤϟϦϜϤϳ 5 4 3 2 1 ΕϼΧΪϤϟ

U U U S U U S S S S ΔϠδϠγΕΎϴϠϤόϟ

1 2 5 3 4 ΕΎΟήΨϤϟ

3-2-1 ΔϓϮϔμϤϟϡΪΨΘγΎΑαΪϜϤϟϞϴΜϤΗArray Representation Of Stack

˺

ΔѧѧΑϮϠτϤϟΔόѧѧδϟΎΑΔѧѧϳΩΎΣΔϓϮϔѧѧμϣϡΪΨΘѧѧγΎΑαΪѧѧϜϤϟϖѧѧϴΒτΗϦѧѧϜϤϳ)size (ΐѧѧγΎϨϤϟωϮϨϟΎѧѧΑϭΕΎϧΎϴΒϠϟ)Data Type (ϪѧϴϓϥΰΨΘѧγϲѧΘϟ )float int Φѧϟ (ϰϋΪѧϳϞϘΘѧδϣήѧϴϐΘϣϡΪΨΘѧγϊѧϣ

)Top (ήϴθϳήηΆϤϛϞϤόΘδϳαΪϜϤϟϲϓήμϨϋϰϠϋϊϗϮϣϰϟ)ΔѧϳΎϬϨϟϰѧϟήѧμϨϋΏήѧϗϊѧϗϮϣΔΣϮΘϔϤϟ(ήηΆϤϟΔϤϴϗϥϮϜΗ˯ΪΘΑϭ)Top=-1 (ήѧλΎϨόϟϦѧϣΎѧϴϟΎΧαΪϜϤϟϥϮϜϳΎϣΪϨϋˬϑήѧόϳϭ

ϲΗϵΎϛΎϴΠϣήΑαΪϜϤϟ const

size=9 int stack[size] int top = -1 top=8

top=3

top=-1 top=0

αΪϜϣϲϟΎΧ ϱϮΤϳαΪϜϣ ϱϮΤϳαΪϜϣ ϱϮΤϳ9

ήλΎϨόϟϦϣ ΪΣϭήμϨϋ 4 ήλΎϨϋ ήλΎϨϋ

ŽŶƨưƬƫŠƟŚƋDžřŠǀƬưƗ)push(

ΔϴΗϵΕϮτΨϟϊΒΘϧϴΤλϞϜθΑΔϓΎοϹΔϴϠϤϋάϴϔϨΘϟ 1-Θϟ˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϛϦϣϖϘΤ)not full (ήηΆϤϟϥϱtopltsize-1 ΔϟΎΣΐϨΠΘϟ

ξϴϔϟ)over flow (ΔϓΎοϹΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top+1 ϲϟΎΘϟϊϗϮϤϟϰϟήϴθϴϟ )ύέΎϔϟ( 3- ΪϳΪΠϟϊϗϮϤϟϲϓΪϳΪΠϟήμϨόϟΔϓΎοstack[top]

ŶƨưƫřƲƯƝŸŰƫřŠǀƬưƗ)pop( ΔϴΗϵΕϮτΨϟϖϓϭϥϮϜΗϥΐΠϳαΪϜϤϟϦϣήμϨϋϱϑάΣΔϴϠϤϋάϴϔϨΗϥ

1-ϝΎѧѧΧήѧѧϴϏαΪѧѧϜϤϟϥ΄ѧѧΑϖѧѧϘΤΘϟ)not Empty (ήѧѧηΆϤϟϥϱtop=-1 ξϴѧѧϐϟΔѧѧϟΎΣΐѧѧϨΠΘϟ)under flow (ϑάΤϟΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ϪϴϟήϴθϳϱάϟϊϗϮϤϟϦϣήμϨόϟάΧ)top (ϓΎϴΘϗϭϪϧΰΧϭϞϘΘδϣήϴϐΘϣϲ

A

I H G F E D C B A

D C B

A

˺

Item=stack[top] 3- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top-1 ϑάΣϱάϟήμϨόϠϟϲϟΎΘϟήμϨόϟϊϗϮϣϰϟήϴθϴϟ

ΔψΣϼϣ ϦϴΗϮτΨϟϥϩϼϋπΘϳ32 ΐϴΗήΘϟΔγϮϜόϣϑάΤϟΔϴϠϤϋϲϓΔϴϠϤϋϲϓΎϬϨϋ

ΔϓΎοϹ 3-2-2 ŽŶƨưƫřšŚǀƯŻŹřƺųStacks Algorithms ΎѧϬϠϴΜϤΗϭΎѧϬΘΠϣήΑϢѧΛϦѧϣϭαΪѧϜϤϟΕΎϴϟΎόϓΔϴτϐΘϟΕΎϴϣίέϮΨϟϦϣΔϋϮϤΠϣϢϴϤμΗϦϜϤϳ

ΎϴϠϤϋ 1-ΔϓΎοϹΔϴϣίέϮΧpush Algorithm

if stack is full Then Over flow True Else Over flow false Top Top+1 Stack[top] New element

2- ϑάΤϟΕΎϴϣίέϮΧpop Algorithm if Stack is Empty

Then Under flow True Else under flow false element stack[top] Top=Top-1

3- αΪϜϤϟ˯ϞϣΔϴϣίέϮΧStack full ήѧѧηΆϤϟΔѧѧϤϴϗϰѧѧϠϋΩΎѧѧϤΘϋϻϡ˯ϮѧϠϤϣαΪѧѧϜϤϟϞѧѧϫϦѧѧϣϖѧѧϘΤΘϠϟΔѧѧϴϣίέϮΨϟϩάѧϫ)Top (ϞѧѧΒϗ

ΔϓΎοϹΕΎϴϠϤϋ If Top=size-1 Then stackfull True

4- αΪϜϤϟϮϠΧΔϴϣίέϮΧStack Empty ϩάϫήηΆϤϟΔϤϴϗϰϠϋΪϤΘϋϻϡϝΎΧαΪϜϤϟϥϞϫϦϣϖϘΤΘϠϟΔϴϣίέϮΨϟ)Top (ΔϴϠϤϋϞΒϗ

ϑάΤϟ If Top=-1

˻˹

Then stackempty True 5- αΪϜϤϟ˯ϼΧΔϴϣίέϮΧClearStack

ϦϣϪϼΧϭαΪϜϤϟΔΌϴϬΗνήϐϟϡΪΨΘδΗΔϴϣίέϮΨϟϩάϫήηΆϤϟΔϤϴϗϞόΠΑήλΎϨόϟ)top=-1( Top -1

3-2-3 ŽŶƨưƫřšŚǀƬưƗŸǀƠƴŤƫŠǀƗźƠƫřŪƯřźŞƫř ΔѧѧϴϋήϓΞϣήѧѧΑϢϴϤѧѧμΗϥ)functions procedures (ΕΎѧѧϴϠϤϋϦѧѧϣΔѧѧϴϠϤϋϭΔѧѧϴϟΎόϓϞѧѧϜϟ

ϭΞϣΎѧϧήΑϲѧϓΎѧϬόϴϤΠΗϢΛϦϣϭΕΎϴϠϤόϟϚϠΗΔΠϣήΑΔϴϔϴϛϴοϮΗϭςϴδΒΗϰϠϋΪϋΎδΗαΪϜϤϟΪѧΣΚϳΪѧѧΤΘϟϭΔѧѧόΑΎΘϤϟϭϢѧѧϬϔϟϞϬѧѧγϭΓ˯ήѧѧϘϠϟΎΤѧѧοϭϥϮѧѧϜϳϭΔѧѧϠϜϴϬϤϟΔѧѧΠϣήΒϟΕΎϔѧѧλϪѧѧϴϓήϓϮѧѧΘΗ

ήϳϮτΘϟϭ ΔΤϴΤλΔϘΣϼϟΔϴϋήϔϟΞϣήΒϟϥϮϜΘϟΞϣΎϧήΒϟΔϣΪϘϣϲϓϲϟΎΘϟϒϳήόΘϟΩϮΟϭνήΘϔϧϭ

includeltiostreamhgt includeltstdlibhgt const size=20 int stack[size] int top int item

1- ŽŶƨưƫřŌLjųLJƾƗźƟŪƯŚƳźŝ void clearstack() top=-1

ϞѧόΠΑ˯ΎѧϔΘϛϻϭήϔѧμϠϟΔϳϭΎѧδϣΎϬϠόΟϭΔϓϮϔμϤϟϊϗϮϣϊϴϤΟϰϠϋέϭήϤϠϟΔΟΎΤϟϡΪϋφΣϻήηΆϤϟ

)top=-1 (ΔϳΪΑϲϓϰϋΪΘδϳϲϋήϔϟΞϣΎϧήΒϟάϫϭαΪϜϤϟΞϣήΑϊϣϞϣΎόΘϟ ϠόΠϟϪ ΎϴϟΎΧ 2- ŽŶƨưƫřŌLjŤƯœƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int fullstack() if(topgt=size-1) return(1) else return(0)

ΝήΨϤϟϥϮϜϳΔϟΪϟϩάϫΎϬϟήηΆϤϟΔϤϴϗΐΟϮϤΑ)top (ΎϣϮϫ1 )true (αΪϜϤϟϥϮϜϳΎϣΪϨϋϪΘϤϴϗϥϮϜΗϭ˯ϮϠϤϣ0 )false (˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϜϳΎϣΪϨϋ ΞϣΎϧήΒϟϭ ϲϋήϔϟ

)fullstack(ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure push (ΔϓΎοϹΔϴϠϤϋάϔϨϴϟ 3- ŽŶƨưƫřƺƬųƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int emptystack()

˻˺

if(top==-1) return(1) else return(0)

ΝήѧѧΨϤϟϥϮѧѧϜϳΔѧѧϟΪϟϩάѧѧϫ ΎѧѧϬϟ ήѧѧηΆϤϟΔѧѧϤϴϗΐѧѧΟϮϤΑ)top (ΎѧѧϣϮϫ1 )true (ϥϮѧѧϜϳΎϣΪѧѧϨϋϭΎѧѧѧѧѧϴϟΎΧαΪѧѧѧѧѧϜϤϟ0 )false( ϲѧѧѧѧѧϋήϔϟΞϣΎѧѧѧѧѧϧήΒϟάѧѧѧѧѧϫϭϝΎѧѧѧѧѧΧήѧѧѧѧѧϴϏαΪѧѧѧѧѧϜϤϟϥϮѧѧѧѧѧϜϳΎϣΪѧѧѧѧѧϨϋ

)emptystack (ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure pop (ϑάΤϟΔϴϠϤϋάϔϨϳϱάϟ 4-ŽŶƨưƫřƼƫřŶůřƹźƈƴƗŠƟŚƋLJƾƗźƟŪƯŚƳźŝ

void push(int item) if(fullstack()) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0) else top=top+1 stack[top]=item

ΪѧѧΣϭήѧѧμϨϋϒϴѧѧπϳϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫ)item (ΞϣΎѧѧϧήΒϟϲѧѧϓϪΎϋΪΘѧѧγϦѧѧϜϤϳϭαΪѧѧϜϤϠϟϲδϴήϟ)main program (ϞΜϣέήϜΘϟΕίΎόϳΪΣϡΪΨΘγ΄ΑΕήϤϟϦϣΩΪϋϱ΄Α)forhellipDo

while (ήμϨόϟΓ˯ήϗϦϤπΘϳϱάϟ)item (ϲѧϋήϔϟΞϣΎѧϧήΒϟ˯ΎϋΪΘѧγϢѧΛ)push (ϰѧϟϪΘϓΎѧοϻαΪϜϤϟ

5- ŽŶƨưƫřƲƯŶůřƹźƈƴƗƝŸŰƫƾƗźƟŪƯŚƳźŝ void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0)

˻˻

else item=stack[top] top=top-1

ϪѧѧѧϴϟήϴѧѧѧθϳϱάѧѧѧϟήѧѧѧμϨόϟάѧѧѧΧ΄ϳϲѧѧѧϋήϔϟΞϣΎѧѧѧϧήΒϟάѧѧѧϫ)top (ήѧѧѧϴϐΘϤϟϲѧѧѧϓϪΨѧѧѧδϨϳϭ)item (ϖϴϘΤΘϟΔϨϴόϣΔΠϟΎόϤΑΎϘΣϻϪϣΪΨΘγϻαΪϜϤϟϦϣήμϨόϟάϫΐΤγϪϠΟϦϣϱάϟνήϐϟ

ϰϋΪΘѧδϳΞϣΎѧϧήΒϟάѧϫϥΎѧϓΔѧόΑΎΘΘϣΓέϮѧμΑαΪѧϜϤϟϦѧϣήѧμϨϋϦϣήΜϛΐΤγϭϑάΣνήϐϟϭϲδϴήϟΞϣΎѧϧήΒϟϦѧϣϊѧϗϮϣϱϲѧϓϭΕήѧϤϟϦѧϣΩΪѧϋϱΎΑέΎѧθϤϟέήѧϜΘϟώϴѧλϯΪѧΣϡΪΨΘѧγΎΑˬ

ΎϬϴϟ 3-2-4 ŶǀƤƫřƭřŶŴŤſŚŝŽŶƨưƫřƢǀŞƐţ

ϲѧѧѧϓήѧѧѧηΆϤϟϒѧѧѧϳήόΗΩέϭΔϓϮϔѧѧѧμϤϟϡΪΨΘѧѧѧγΎΑϖΑΎѧѧѧδϟϖѧѧѧϴΒτΘϟ)top (ϦѧѧѧϋϞϘΘѧѧѧδϣήѧѧѧϴϐΘϤϛαΪѧϜϤϟϞѧΜϤΗϲѧΘϟΔϓϮϔμϤϟˬΪѧϴϘϟϡΪΨΘѧδϧΎѧϨϫΎѧϨϧϻ)Record (ϲϧΎѧϴΑϞѧϜϴϬϛΎѧόϣΎѧϤϬϠϴΜϤΗϲѧϓ

ϮѧϫϲϧΎѧΜϟ˯ΰѧΠϟϭΔϓϮϔѧμϣϞϜѧηϰϠϋϮѧϫϭαΪѧϜϤϟϞѧΜϤϳϝϭϷϦϳΰΟϦϣΪϴϘϟϥϮϜΘϳΚϴΣΪΣϭΆϤϟϞΜϤϳϞϘΣήη)top (ϲΗϻΎϛϑήόϳϭ

int item const size=10 struct stack int top int element[size] st sttop=-1 stack

element Ϯϫ˯ΰΠϟάϫ top

ϢγΎΑϡΪΨΘδϳϭsttop ϢγΎΑϡΪΨΘδϳϭstelement[index] ΔϴϟΎΘϟΕϮτΨϟϊΒΘϧαΪϜϤϟάϬϟΪϳΪΟήμϨϋΔϓΎοϻ

1-ήηΆϤϟΔϤϴϗΙΪΤϧ)top (ΪϴϘϟϲϓϞϘΣϮϫϱάϟstack Βμϴϟ)(3 sttop=sttop+1

2-ΪϳΪΠϟήμϨόϟϒϴπϧ)D(ΪϳΪΠϟϊϗϮϤϟϲϓ)3 ( stelement[sttop]=D

ΔϴϟΎΘϟΓέϮμϟΎΑαΪϜϤϟΒμϳάϬΑϭ stack

A B C 3

A B C D 3

kholood alharthi

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 2: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˺˾

ΔϬΠϟβϔϧϡΪΨΘδϧϥΐΠϳαΪϜϤϟϦϣήμϨϋϑάΣΪϨϋϭ ςѧϘϓΔΣϮΘϔϤϟˬάѧΧ΄ϧϥϊϴτΘѧδϧϱ

ήμϨόϟ)D (ήѧμϨόϟάѧΧ΄ϧϢΛ)C(ήѧμϨόϟάѧΧ΄ϧϥϊϴτΘѧδϧϻϭϊΑΎѧΘΘϟΎΑ)C(ήѧμϨόϟάѧΧ΄ϧϥϞѧΒϗ)D (ήѧѧμϨόϟϥΔѧѧψΣϼϣϊѧѧϣ)D (ήѧѧϴΧϞѧѧΧΩ ΓέΎѧѧΒόϟΎΑαΪѧѧϜϤϟϞѧѧϤϋκѧѧΨϠϧϥϊϴτΘѧѧδϧάѧѧϬϟϭ

ΔϴΗϵ) ΝήΨϳϦϣϝϭϞΧΪϳϦϣήΧ ( )LIFO(Last In First Out άΧϦϜϤϳϻϪϧΎϤϛ)ϑάΣ (ϑάѧΣΪѧόΑϻαΪѧϜϤϟήλΎϨϋςγϭϦϣήμϨϋ)ΝήѧΧ (ήѧλΎϨόϟ

ΪѧΑϡΪΨΘѧδΗϻϭΔѧϘϠϐϣϯήѧΧϻΔѧϳΎϬϨϟϥϰѧϠϋΪѧϴϛ΄ΘϟϊѧϣΔѧΣϮΘϔϤϟΔϳΎϬϨϟΔϬΟϦϣϪϘΒδΗϲΘϟ ϭαΪѧѧϜϤϟϰѧѧϟΔϓΎѧѧοϹΔѧѧϴϠϤϋϰϤѧѧδΗ)push(ϭ)Insertion(αΪѧѧϜϤϟϦѧѧϣϑάѧѧΤϟΔѧѧϴϠϤϋϭ)pop (

ϭ)Deletion(

ϝΎΜϣ νήϔϧ)S (ϲϨόΗ)Stacking(ϭαΪϜϤϟϰϟήμϨϋΔϓΎοΔϴϠϤόϟΰϣήΗϱ)U(ϲϨόΗ) Unstacking (αΪϜϤϠϟΕϼΧΪϤϟΔϋϮϤΠϣΖϧΎϛϭαΪϜϤϟϦϣήμϨϋϑάΣΔϴϠϤόϟΰϣήΗϱ

ΐϴΗήΘϟΎΑRNYBM ˬϦϴϤϴϟϦϣΔϴΗϵΕΎϴϠϤόϟϦϣΔϠδϠγϞϛάϴϔϨΗΪόΑΕΎΟήΨϤϟϲϫΎϣϦϴΑ ϣϦϴϤϴϟϰϟέΎδϴϟϦ -SSUUSUSUSU Ώ-SSSUSUUSUU

ϞΤϟ ϥϮϜϳήμϨόϟέΎϴΘΧϥΎϓαΪϜϤϟϰϟήμϨϋϝΎΧΩΔϴϠϤϋάϴϔϨΗΪϨϋϪϧΕϼΧΪϤϟΐϴΗήΘΑΪμϘϳ

άΧ΄ϧϱϊΑΎΘΘϟΎΑΕϼΧΪϤϟϚϠΗϦϣM ϢΛϻϭ B ˬάϜϫϭˬήμϨόϟάΧϊϴτΘδϧϻϭN ϞΒϗϪϟΔϘΑΎδϟήλΎϨόϟ

- R N Y B M ΕϼΧΪϤϟ

U S U S U S U U S S ΕΎϴϠϤόϟΔϠδϠγ R N Y M B ΕΎΟήΨϤϟ

Ώ - R N Y M B ΕϼΧΪϤϟ

U U S U U S U S S S ΕΎϴϠϤόϟΔϠδϠγ M R B N Y ΕΎΟήΨϤϟ

ϝΎΜϣ ϧΎϛΫΐϴΗήΘΑαΪϜϣΕϼΧΪϣΔϋϮϤΠϣΖ54321 ϦϣΎϳϦϴΑˬέΎδϴϟϰϟϦϴϤϴϟϦϣαΪϜϤϟϞϤϋΏϮϠγϖϓϭΔΤϴΤλϩΎϧΩΔϨϴΒϤϟΕΎΟήΨϤϟ ) ϰϟέΎδϴϟϦϣΕΎΟήΨϤϟΐϴΗήΗ

ϦϴϤϴϟ( - 2 4 5 3 1 Ώ-4 2 3 1 5 Ν- 4 5 1 2 3 Ω-4 3 5 1 2 ϞΤϟ ƕźƠƫř ΔΑϮϠτϤϟΕΎΟήΨϤϟ )24531(

˺˿

ήμϨόϟΝήΧϻ)2 (ϦϳήμϨϟϝΎΧΩϻϭΐΠϳ21 ϮϫΕΎϴϠϤόϟάϴϔϨΗϞδϠδΗϥϱSSU ϥϱΒμΗαΪϜϤϟΕΎϳϮΘΤϣ

ήμϨόϟΝήΧϻϭ)4 (ήμϨόϟΪόΑ)2 (ϦϳήμϨόϟϝΎΧΩΐΠϳ43 ΕΎϴϠϤόϟάϴϔϨΗϞδϠδΗϥϱϫΔϟΎΤϟϩάϫϲϓϮSSUSSU αΪϜϤϟΕΎϳϮΘΤϣΒμΗϭ

3 1

ήμϨόϟΝήΧϹϭ )5 (ήμϨόϟΪόΑ)4 (άϴϔϨΗϞδϠδΗϥϱϪΟήΧϢΛϻϭϪϟΎΧΩΐΠϳ

ϥϮϜϳΕΎϴϠϤόϟSSUSSUSU αΪϜϤϟΕΎϳϮΘΤϣΒμΗϭ

3 1

ΝήѧѧΧϦѧѧϜϤϳΔѧѧϴϟΎΤϟαΪѧѧϜϤϟΔѧѧϟΎΣϖѧѧϓϭ ϦϳήѧѧμϨόϟ 1ϢѧѧΛ3 άѧѧϴϔϨΗϞѧѧδϠδΗϥϱϊΑΎѧѧΘΘϟΎΑ

ϮѧѧϫΕΎѧѧϴϠϤόϟSSUSSUSUUU ϞѧѧδϠδΗϥΎѧѧϛΫΕΎѧѧΟήΨϤϟϩάѧѧϫϞѧѧΜϣϰѧѧϠϋϝϮѧѧμΤϟϦѧѧϜϤϳΫΕϼΧΪϤϟΐϴΗήΘΑϡΰΘϟϷϊϣΓήϴΧϷΔϐϴμϟΎΑΕΎϴϠϤόϟ

śƕźƠƫř ΔΑϮϠτϤϟΕΎΟήΨϤϟ)42315( ήѧѧμϨόϟΝήѧѧΧϻ)4 (ѧѧλΎϨόϟϝΎѧѧѧΧΩϻϭΐѧѧΠϳή4321 ΕΎѧѧѧϴϠϤόϟΔϠѧѧδϠγϖѧѧϓϭSSSSU

αΪϜϤϟΕΎϳϮΘΤϣΒμΗϭ

3 2 1

1

˺

ήѧѧμϨόϟΝήѧѧΧϻϭ)2 (ήѧѧμϨόϟΝήѧѧΧΐѧѧΠϳΔѧѧϴϟΎΤϟϪѧѧΘϟΎΤΑαΪѧѧϜϤϟϦѧѧϣ)3 (άѧѧϫϥΎѧѧϓάѧѧϟϪѧѧϠΒϗΕΎΟήΨϤϟϦϣϞδϠδΘϟ)42315(ϩάϴϔϨΗϦϜϤϳϻ

ũƕźƠƫř ΔΑϮϠτϤϟΕΎΟήΨϤϟ)45123(

ϦϳήμϨόϟΝήΧϦϜϤϳ54 ΔϴΗϵΕΎϴϠϤόϟΔϠδϠγάϴϔϨΗΪόΑ 5 4 3 2 1 ΕϼΧΪϤϟ

U S U S S S S ΔϠδϠγ ΕΎϴϠϤόϟ 5 4 ΕΎΟήΨϤϟ

αΪϜϤϟΕΎϳϮΘΤϣΒμΘγϭ

3 2 1

ήμϨόϟΝήΧέάόΘϴγΎϨϫϭ)1 (ϦϳήμϨόϟϞΒϗ)23 (ΕΎΟήΨϤϟϞδϠδΗϥΎϓάϟ)45123 (

ϴΤλήϴϏ ƫřŵƕźƠ ΔΑϮϠτϤϟΕΎΟήΨϤϟ)43521(

ϲΗϵϞδϠδΘϟΎΑΝήΧϹϭϝΎΧΩϹΕΎϴϠϤϋάϴϔϨΗΪϨϋΕΎΟήΨϤϟϩάϫϰϠϋϝϮμΤϟϦϜϤϳ 5 4 3 2 1 ΕϼΧΪϤϟ

U U U S U U S S S S ΔϠδϠγΕΎϴϠϤόϟ

1 2 5 3 4 ΕΎΟήΨϤϟ

3-2-1 ΔϓϮϔμϤϟϡΪΨΘγΎΑαΪϜϤϟϞϴΜϤΗArray Representation Of Stack

˺

ΔѧѧΑϮϠτϤϟΔόѧѧδϟΎΑΔѧѧϳΩΎΣΔϓϮϔѧѧμϣϡΪΨΘѧѧγΎΑαΪѧѧϜϤϟϖѧѧϴΒτΗϦѧѧϜϤϳ)size (ΐѧѧγΎϨϤϟωϮϨϟΎѧѧΑϭΕΎϧΎϴΒϠϟ)Data Type (ϪѧϴϓϥΰΨΘѧγϲѧΘϟ )float int Φѧϟ (ϰϋΪѧϳϞϘΘѧδϣήѧϴϐΘϣϡΪΨΘѧγϊѧϣ

)Top (ήϴθϳήηΆϤϛϞϤόΘδϳαΪϜϤϟϲϓήμϨϋϰϠϋϊϗϮϣϰϟ)ΔѧϳΎϬϨϟϰѧϟήѧμϨϋΏήѧϗϊѧϗϮϣΔΣϮΘϔϤϟ(ήηΆϤϟΔϤϴϗϥϮϜΗ˯ΪΘΑϭ)Top=-1 (ήѧλΎϨόϟϦѧϣΎѧϴϟΎΧαΪϜϤϟϥϮϜϳΎϣΪϨϋˬϑήѧόϳϭ

ϲΗϵΎϛΎϴΠϣήΑαΪϜϤϟ const

size=9 int stack[size] int top = -1 top=8

top=3

top=-1 top=0

αΪϜϣϲϟΎΧ ϱϮΤϳαΪϜϣ ϱϮΤϳαΪϜϣ ϱϮΤϳ9

ήλΎϨόϟϦϣ ΪΣϭήμϨϋ 4 ήλΎϨϋ ήλΎϨϋ

ŽŶƨưƬƫŠƟŚƋDžřŠǀƬưƗ)push(

ΔϴΗϵΕϮτΨϟϊΒΘϧϴΤλϞϜθΑΔϓΎοϹΔϴϠϤϋάϴϔϨΘϟ 1-Θϟ˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϛϦϣϖϘΤ)not full (ήηΆϤϟϥϱtopltsize-1 ΔϟΎΣΐϨΠΘϟ

ξϴϔϟ)over flow (ΔϓΎοϹΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top+1 ϲϟΎΘϟϊϗϮϤϟϰϟήϴθϴϟ )ύέΎϔϟ( 3- ΪϳΪΠϟϊϗϮϤϟϲϓΪϳΪΠϟήμϨόϟΔϓΎοstack[top]

ŶƨưƫřƲƯƝŸŰƫřŠǀƬưƗ)pop( ΔϴΗϵΕϮτΨϟϖϓϭϥϮϜΗϥΐΠϳαΪϜϤϟϦϣήμϨϋϱϑάΣΔϴϠϤϋάϴϔϨΗϥ

1-ϝΎѧѧΧήѧѧϴϏαΪѧѧϜϤϟϥ΄ѧѧΑϖѧѧϘΤΘϟ)not Empty (ήѧѧηΆϤϟϥϱtop=-1 ξϴѧѧϐϟΔѧѧϟΎΣΐѧѧϨΠΘϟ)under flow (ϑάΤϟΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ϪϴϟήϴθϳϱάϟϊϗϮϤϟϦϣήμϨόϟάΧ)top (ϓΎϴΘϗϭϪϧΰΧϭϞϘΘδϣήϴϐΘϣϲ

A

I H G F E D C B A

D C B

A

˺

Item=stack[top] 3- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top-1 ϑάΣϱάϟήμϨόϠϟϲϟΎΘϟήμϨόϟϊϗϮϣϰϟήϴθϴϟ

ΔψΣϼϣ ϦϴΗϮτΨϟϥϩϼϋπΘϳ32 ΐϴΗήΘϟΔγϮϜόϣϑάΤϟΔϴϠϤϋϲϓΔϴϠϤϋϲϓΎϬϨϋ

ΔϓΎοϹ 3-2-2 ŽŶƨưƫřšŚǀƯŻŹřƺųStacks Algorithms ΎѧϬϠϴΜϤΗϭΎѧϬΘΠϣήΑϢѧΛϦѧϣϭαΪѧϜϤϟΕΎϴϟΎόϓΔϴτϐΘϟΕΎϴϣίέϮΨϟϦϣΔϋϮϤΠϣϢϴϤμΗϦϜϤϳ

ΎϴϠϤϋ 1-ΔϓΎοϹΔϴϣίέϮΧpush Algorithm

if stack is full Then Over flow True Else Over flow false Top Top+1 Stack[top] New element

2- ϑάΤϟΕΎϴϣίέϮΧpop Algorithm if Stack is Empty

Then Under flow True Else under flow false element stack[top] Top=Top-1

3- αΪϜϤϟ˯ϞϣΔϴϣίέϮΧStack full ήѧѧηΆϤϟΔѧѧϤϴϗϰѧѧϠϋΩΎѧѧϤΘϋϻϡ˯ϮѧϠϤϣαΪѧѧϜϤϟϞѧѧϫϦѧѧϣϖѧѧϘΤΘϠϟΔѧѧϴϣίέϮΨϟϩάѧϫ)Top (ϞѧѧΒϗ

ΔϓΎοϹΕΎϴϠϤϋ If Top=size-1 Then stackfull True

4- αΪϜϤϟϮϠΧΔϴϣίέϮΧStack Empty ϩάϫήηΆϤϟΔϤϴϗϰϠϋΪϤΘϋϻϡϝΎΧαΪϜϤϟϥϞϫϦϣϖϘΤΘϠϟΔϴϣίέϮΨϟ)Top (ΔϴϠϤϋϞΒϗ

ϑάΤϟ If Top=-1

˻˹

Then stackempty True 5- αΪϜϤϟ˯ϼΧΔϴϣίέϮΧClearStack

ϦϣϪϼΧϭαΪϜϤϟΔΌϴϬΗνήϐϟϡΪΨΘδΗΔϴϣίέϮΨϟϩάϫήηΆϤϟΔϤϴϗϞόΠΑήλΎϨόϟ)top=-1( Top -1

3-2-3 ŽŶƨưƫřšŚǀƬưƗŸǀƠƴŤƫŠǀƗźƠƫřŪƯřźŞƫř ΔѧѧϴϋήϓΞϣήѧѧΑϢϴϤѧѧμΗϥ)functions procedures (ΕΎѧѧϴϠϤϋϦѧѧϣΔѧѧϴϠϤϋϭΔѧѧϴϟΎόϓϞѧѧϜϟ

ϭΞϣΎѧϧήΑϲѧϓΎѧϬόϴϤΠΗϢΛϦϣϭΕΎϴϠϤόϟϚϠΗΔΠϣήΑΔϴϔϴϛϴοϮΗϭςϴδΒΗϰϠϋΪϋΎδΗαΪϜϤϟΪѧΣΚϳΪѧѧΤΘϟϭΔѧѧόΑΎΘϤϟϭϢѧѧϬϔϟϞϬѧѧγϭΓ˯ήѧѧϘϠϟΎΤѧѧοϭϥϮѧѧϜϳϭΔѧѧϠϜϴϬϤϟΔѧѧΠϣήΒϟΕΎϔѧѧλϪѧѧϴϓήϓϮѧѧΘΗ

ήϳϮτΘϟϭ ΔΤϴΤλΔϘΣϼϟΔϴϋήϔϟΞϣήΒϟϥϮϜΘϟΞϣΎϧήΒϟΔϣΪϘϣϲϓϲϟΎΘϟϒϳήόΘϟΩϮΟϭνήΘϔϧϭ

includeltiostreamhgt includeltstdlibhgt const size=20 int stack[size] int top int item

1- ŽŶƨưƫřŌLjųLJƾƗźƟŪƯŚƳźŝ void clearstack() top=-1

ϞѧόΠΑ˯ΎѧϔΘϛϻϭήϔѧμϠϟΔϳϭΎѧδϣΎϬϠόΟϭΔϓϮϔμϤϟϊϗϮϣϊϴϤΟϰϠϋέϭήϤϠϟΔΟΎΤϟϡΪϋφΣϻήηΆϤϟ

)top=-1 (ΔϳΪΑϲϓϰϋΪΘδϳϲϋήϔϟΞϣΎϧήΒϟάϫϭαΪϜϤϟΞϣήΑϊϣϞϣΎόΘϟ ϠόΠϟϪ ΎϴϟΎΧ 2- ŽŶƨưƫřŌLjŤƯœƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int fullstack() if(topgt=size-1) return(1) else return(0)

ΝήΨϤϟϥϮϜϳΔϟΪϟϩάϫΎϬϟήηΆϤϟΔϤϴϗΐΟϮϤΑ)top (ΎϣϮϫ1 )true (αΪϜϤϟϥϮϜϳΎϣΪϨϋϪΘϤϴϗϥϮϜΗϭ˯ϮϠϤϣ0 )false (˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϜϳΎϣΪϨϋ ΞϣΎϧήΒϟϭ ϲϋήϔϟ

)fullstack(ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure push (ΔϓΎοϹΔϴϠϤϋάϔϨϴϟ 3- ŽŶƨưƫřƺƬųƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int emptystack()

˻˺

if(top==-1) return(1) else return(0)

ΝήѧѧΨϤϟϥϮѧѧϜϳΔѧѧϟΪϟϩάѧѧϫ ΎѧѧϬϟ ήѧѧηΆϤϟΔѧѧϤϴϗΐѧѧΟϮϤΑ)top (ΎѧѧϣϮϫ1 )true (ϥϮѧѧϜϳΎϣΪѧѧϨϋϭΎѧѧѧѧѧϴϟΎΧαΪѧѧѧѧѧϜϤϟ0 )false( ϲѧѧѧѧѧϋήϔϟΞϣΎѧѧѧѧѧϧήΒϟάѧѧѧѧѧϫϭϝΎѧѧѧѧѧΧήѧѧѧѧѧϴϏαΪѧѧѧѧѧϜϤϟϥϮѧѧѧѧѧϜϳΎϣΪѧѧѧѧѧϨϋ

)emptystack (ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure pop (ϑάΤϟΔϴϠϤϋάϔϨϳϱάϟ 4-ŽŶƨưƫřƼƫřŶůřƹźƈƴƗŠƟŚƋLJƾƗźƟŪƯŚƳźŝ

void push(int item) if(fullstack()) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0) else top=top+1 stack[top]=item

ΪѧѧΣϭήѧѧμϨϋϒϴѧѧπϳϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫ)item (ΞϣΎѧѧϧήΒϟϲѧѧϓϪΎϋΪΘѧѧγϦѧѧϜϤϳϭαΪѧѧϜϤϠϟϲδϴήϟ)main program (ϞΜϣέήϜΘϟΕίΎόϳΪΣϡΪΨΘγ΄ΑΕήϤϟϦϣΩΪϋϱ΄Α)forhellipDo

while (ήμϨόϟΓ˯ήϗϦϤπΘϳϱάϟ)item (ϲѧϋήϔϟΞϣΎѧϧήΒϟ˯ΎϋΪΘѧγϢѧΛ)push (ϰѧϟϪΘϓΎѧοϻαΪϜϤϟ

5- ŽŶƨưƫřƲƯŶůřƹźƈƴƗƝŸŰƫƾƗźƟŪƯŚƳźŝ void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0)

˻˻

else item=stack[top] top=top-1

ϪѧѧѧϴϟήϴѧѧѧθϳϱάѧѧѧϟήѧѧѧμϨόϟάѧѧѧΧ΄ϳϲѧѧѧϋήϔϟΞϣΎѧѧѧϧήΒϟάѧѧѧϫ)top (ήѧѧѧϴϐΘϤϟϲѧѧѧϓϪΨѧѧѧδϨϳϭ)item (ϖϴϘΤΘϟΔϨϴόϣΔΠϟΎόϤΑΎϘΣϻϪϣΪΨΘγϻαΪϜϤϟϦϣήμϨόϟάϫΐΤγϪϠΟϦϣϱάϟνήϐϟ

ϰϋΪΘѧδϳΞϣΎѧϧήΒϟάѧϫϥΎѧϓΔѧόΑΎΘΘϣΓέϮѧμΑαΪѧϜϤϟϦѧϣήѧμϨϋϦϣήΜϛΐΤγϭϑάΣνήϐϟϭϲδϴήϟΞϣΎѧϧήΒϟϦѧϣϊѧϗϮϣϱϲѧϓϭΕήѧϤϟϦѧϣΩΪѧϋϱΎΑέΎѧθϤϟέήѧϜΘϟώϴѧλϯΪѧΣϡΪΨΘѧγΎΑˬ

ΎϬϴϟ 3-2-4 ŶǀƤƫřƭřŶŴŤſŚŝŽŶƨưƫřƢǀŞƐţ

ϲѧѧѧϓήѧѧѧηΆϤϟϒѧѧѧϳήόΗΩέϭΔϓϮϔѧѧѧμϤϟϡΪΨΘѧѧѧγΎΑϖΑΎѧѧѧδϟϖѧѧѧϴΒτΘϟ)top (ϦѧѧѧϋϞϘΘѧѧѧδϣήѧѧѧϴϐΘϤϛαΪѧϜϤϟϞѧΜϤΗϲѧΘϟΔϓϮϔμϤϟˬΪѧϴϘϟϡΪΨΘѧδϧΎѧϨϫΎѧϨϧϻ)Record (ϲϧΎѧϴΑϞѧϜϴϬϛΎѧόϣΎѧϤϬϠϴΜϤΗϲѧϓ

ϮѧϫϲϧΎѧΜϟ˯ΰѧΠϟϭΔϓϮϔѧμϣϞϜѧηϰϠϋϮѧϫϭαΪѧϜϤϟϞѧΜϤϳϝϭϷϦϳΰΟϦϣΪϴϘϟϥϮϜΘϳΚϴΣΪΣϭΆϤϟϞΜϤϳϞϘΣήη)top (ϲΗϻΎϛϑήόϳϭ

int item const size=10 struct stack int top int element[size] st sttop=-1 stack

element Ϯϫ˯ΰΠϟάϫ top

ϢγΎΑϡΪΨΘδϳϭsttop ϢγΎΑϡΪΨΘδϳϭstelement[index] ΔϴϟΎΘϟΕϮτΨϟϊΒΘϧαΪϜϤϟάϬϟΪϳΪΟήμϨϋΔϓΎοϻ

1-ήηΆϤϟΔϤϴϗΙΪΤϧ)top (ΪϴϘϟϲϓϞϘΣϮϫϱάϟstack Βμϴϟ)(3 sttop=sttop+1

2-ΪϳΪΠϟήμϨόϟϒϴπϧ)D(ΪϳΪΠϟϊϗϮϤϟϲϓ)3 ( stelement[sttop]=D

ΔϴϟΎΘϟΓέϮμϟΎΑαΪϜϤϟΒμϳάϬΑϭ stack

A B C 3

A B C D 3

kholood alharthi

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 3: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˺˿

ήμϨόϟΝήΧϻ)2 (ϦϳήμϨϟϝΎΧΩϻϭΐΠϳ21 ϮϫΕΎϴϠϤόϟάϴϔϨΗϞδϠδΗϥϱSSU ϥϱΒμΗαΪϜϤϟΕΎϳϮΘΤϣ

ήμϨόϟΝήΧϻϭ)4 (ήμϨόϟΪόΑ)2 (ϦϳήμϨόϟϝΎΧΩΐΠϳ43 ΕΎϴϠϤόϟάϴϔϨΗϞδϠδΗϥϱϫΔϟΎΤϟϩάϫϲϓϮSSUSSU αΪϜϤϟΕΎϳϮΘΤϣΒμΗϭ

3 1

ήμϨόϟΝήΧϹϭ )5 (ήμϨόϟΪόΑ)4 (άϴϔϨΗϞδϠδΗϥϱϪΟήΧϢΛϻϭϪϟΎΧΩΐΠϳ

ϥϮϜϳΕΎϴϠϤόϟSSUSSUSU αΪϜϤϟΕΎϳϮΘΤϣΒμΗϭ

3 1

ΝήѧѧΧϦѧѧϜϤϳΔѧѧϴϟΎΤϟαΪѧѧϜϤϟΔѧѧϟΎΣϖѧѧϓϭ ϦϳήѧѧμϨόϟ 1ϢѧѧΛ3 άѧѧϴϔϨΗϞѧѧδϠδΗϥϱϊΑΎѧѧΘΘϟΎΑ

ϮѧѧϫΕΎѧѧϴϠϤόϟSSUSSUSUUU ϞѧѧδϠδΗϥΎѧѧϛΫΕΎѧѧΟήΨϤϟϩάѧѧϫϞѧѧΜϣϰѧѧϠϋϝϮѧѧμΤϟϦѧѧϜϤϳΫΕϼΧΪϤϟΐϴΗήΘΑϡΰΘϟϷϊϣΓήϴΧϷΔϐϴμϟΎΑΕΎϴϠϤόϟ

śƕźƠƫř ΔΑϮϠτϤϟΕΎΟήΨϤϟ)42315( ήѧѧμϨόϟΝήѧѧΧϻ)4 (ѧѧλΎϨόϟϝΎѧѧѧΧΩϻϭΐѧѧΠϳή4321 ΕΎѧѧѧϴϠϤόϟΔϠѧѧδϠγϖѧѧϓϭSSSSU

αΪϜϤϟΕΎϳϮΘΤϣΒμΗϭ

3 2 1

1

˺

ήѧѧμϨόϟΝήѧѧΧϻϭ)2 (ήѧѧμϨόϟΝήѧѧΧΐѧѧΠϳΔѧѧϴϟΎΤϟϪѧѧΘϟΎΤΑαΪѧѧϜϤϟϦѧѧϣ)3 (άѧѧϫϥΎѧѧϓάѧѧϟϪѧѧϠΒϗΕΎΟήΨϤϟϦϣϞδϠδΘϟ)42315(ϩάϴϔϨΗϦϜϤϳϻ

ũƕźƠƫř ΔΑϮϠτϤϟΕΎΟήΨϤϟ)45123(

ϦϳήμϨόϟΝήΧϦϜϤϳ54 ΔϴΗϵΕΎϴϠϤόϟΔϠδϠγάϴϔϨΗΪόΑ 5 4 3 2 1 ΕϼΧΪϤϟ

U S U S S S S ΔϠδϠγ ΕΎϴϠϤόϟ 5 4 ΕΎΟήΨϤϟ

αΪϜϤϟΕΎϳϮΘΤϣΒμΘγϭ

3 2 1

ήμϨόϟΝήΧέάόΘϴγΎϨϫϭ)1 (ϦϳήμϨόϟϞΒϗ)23 (ΕΎΟήΨϤϟϞδϠδΗϥΎϓάϟ)45123 (

ϴΤλήϴϏ ƫřŵƕźƠ ΔΑϮϠτϤϟΕΎΟήΨϤϟ)43521(

ϲΗϵϞδϠδΘϟΎΑΝήΧϹϭϝΎΧΩϹΕΎϴϠϤϋάϴϔϨΗΪϨϋΕΎΟήΨϤϟϩάϫϰϠϋϝϮμΤϟϦϜϤϳ 5 4 3 2 1 ΕϼΧΪϤϟ

U U U S U U S S S S ΔϠδϠγΕΎϴϠϤόϟ

1 2 5 3 4 ΕΎΟήΨϤϟ

3-2-1 ΔϓϮϔμϤϟϡΪΨΘγΎΑαΪϜϤϟϞϴΜϤΗArray Representation Of Stack

˺

ΔѧѧΑϮϠτϤϟΔόѧѧδϟΎΑΔѧѧϳΩΎΣΔϓϮϔѧѧμϣϡΪΨΘѧѧγΎΑαΪѧѧϜϤϟϖѧѧϴΒτΗϦѧѧϜϤϳ)size (ΐѧѧγΎϨϤϟωϮϨϟΎѧѧΑϭΕΎϧΎϴΒϠϟ)Data Type (ϪѧϴϓϥΰΨΘѧγϲѧΘϟ )float int Φѧϟ (ϰϋΪѧϳϞϘΘѧδϣήѧϴϐΘϣϡΪΨΘѧγϊѧϣ

)Top (ήϴθϳήηΆϤϛϞϤόΘδϳαΪϜϤϟϲϓήμϨϋϰϠϋϊϗϮϣϰϟ)ΔѧϳΎϬϨϟϰѧϟήѧμϨϋΏήѧϗϊѧϗϮϣΔΣϮΘϔϤϟ(ήηΆϤϟΔϤϴϗϥϮϜΗ˯ΪΘΑϭ)Top=-1 (ήѧλΎϨόϟϦѧϣΎѧϴϟΎΧαΪϜϤϟϥϮϜϳΎϣΪϨϋˬϑήѧόϳϭ

ϲΗϵΎϛΎϴΠϣήΑαΪϜϤϟ const

size=9 int stack[size] int top = -1 top=8

top=3

top=-1 top=0

αΪϜϣϲϟΎΧ ϱϮΤϳαΪϜϣ ϱϮΤϳαΪϜϣ ϱϮΤϳ9

ήλΎϨόϟϦϣ ΪΣϭήμϨϋ 4 ήλΎϨϋ ήλΎϨϋ

ŽŶƨưƬƫŠƟŚƋDžřŠǀƬưƗ)push(

ΔϴΗϵΕϮτΨϟϊΒΘϧϴΤλϞϜθΑΔϓΎοϹΔϴϠϤϋάϴϔϨΘϟ 1-Θϟ˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϛϦϣϖϘΤ)not full (ήηΆϤϟϥϱtopltsize-1 ΔϟΎΣΐϨΠΘϟ

ξϴϔϟ)over flow (ΔϓΎοϹΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top+1 ϲϟΎΘϟϊϗϮϤϟϰϟήϴθϴϟ )ύέΎϔϟ( 3- ΪϳΪΠϟϊϗϮϤϟϲϓΪϳΪΠϟήμϨόϟΔϓΎοstack[top]

ŶƨưƫřƲƯƝŸŰƫřŠǀƬưƗ)pop( ΔϴΗϵΕϮτΨϟϖϓϭϥϮϜΗϥΐΠϳαΪϜϤϟϦϣήμϨϋϱϑάΣΔϴϠϤϋάϴϔϨΗϥ

1-ϝΎѧѧΧήѧѧϴϏαΪѧѧϜϤϟϥ΄ѧѧΑϖѧѧϘΤΘϟ)not Empty (ήѧѧηΆϤϟϥϱtop=-1 ξϴѧѧϐϟΔѧѧϟΎΣΐѧѧϨΠΘϟ)under flow (ϑάΤϟΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ϪϴϟήϴθϳϱάϟϊϗϮϤϟϦϣήμϨόϟάΧ)top (ϓΎϴΘϗϭϪϧΰΧϭϞϘΘδϣήϴϐΘϣϲ

A

I H G F E D C B A

D C B

A

˺

Item=stack[top] 3- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top-1 ϑάΣϱάϟήμϨόϠϟϲϟΎΘϟήμϨόϟϊϗϮϣϰϟήϴθϴϟ

ΔψΣϼϣ ϦϴΗϮτΨϟϥϩϼϋπΘϳ32 ΐϴΗήΘϟΔγϮϜόϣϑάΤϟΔϴϠϤϋϲϓΔϴϠϤϋϲϓΎϬϨϋ

ΔϓΎοϹ 3-2-2 ŽŶƨưƫřšŚǀƯŻŹřƺųStacks Algorithms ΎѧϬϠϴΜϤΗϭΎѧϬΘΠϣήΑϢѧΛϦѧϣϭαΪѧϜϤϟΕΎϴϟΎόϓΔϴτϐΘϟΕΎϴϣίέϮΨϟϦϣΔϋϮϤΠϣϢϴϤμΗϦϜϤϳ

ΎϴϠϤϋ 1-ΔϓΎοϹΔϴϣίέϮΧpush Algorithm

if stack is full Then Over flow True Else Over flow false Top Top+1 Stack[top] New element

2- ϑάΤϟΕΎϴϣίέϮΧpop Algorithm if Stack is Empty

Then Under flow True Else under flow false element stack[top] Top=Top-1

3- αΪϜϤϟ˯ϞϣΔϴϣίέϮΧStack full ήѧѧηΆϤϟΔѧѧϤϴϗϰѧѧϠϋΩΎѧѧϤΘϋϻϡ˯ϮѧϠϤϣαΪѧѧϜϤϟϞѧѧϫϦѧѧϣϖѧѧϘΤΘϠϟΔѧѧϴϣίέϮΨϟϩάѧϫ)Top (ϞѧѧΒϗ

ΔϓΎοϹΕΎϴϠϤϋ If Top=size-1 Then stackfull True

4- αΪϜϤϟϮϠΧΔϴϣίέϮΧStack Empty ϩάϫήηΆϤϟΔϤϴϗϰϠϋΪϤΘϋϻϡϝΎΧαΪϜϤϟϥϞϫϦϣϖϘΤΘϠϟΔϴϣίέϮΨϟ)Top (ΔϴϠϤϋϞΒϗ

ϑάΤϟ If Top=-1

˻˹

Then stackempty True 5- αΪϜϤϟ˯ϼΧΔϴϣίέϮΧClearStack

ϦϣϪϼΧϭαΪϜϤϟΔΌϴϬΗνήϐϟϡΪΨΘδΗΔϴϣίέϮΨϟϩάϫήηΆϤϟΔϤϴϗϞόΠΑήλΎϨόϟ)top=-1( Top -1

3-2-3 ŽŶƨưƫřšŚǀƬưƗŸǀƠƴŤƫŠǀƗźƠƫřŪƯřźŞƫř ΔѧѧϴϋήϓΞϣήѧѧΑϢϴϤѧѧμΗϥ)functions procedures (ΕΎѧѧϴϠϤϋϦѧѧϣΔѧѧϴϠϤϋϭΔѧѧϴϟΎόϓϞѧѧϜϟ

ϭΞϣΎѧϧήΑϲѧϓΎѧϬόϴϤΠΗϢΛϦϣϭΕΎϴϠϤόϟϚϠΗΔΠϣήΑΔϴϔϴϛϴοϮΗϭςϴδΒΗϰϠϋΪϋΎδΗαΪϜϤϟΪѧΣΚϳΪѧѧΤΘϟϭΔѧѧόΑΎΘϤϟϭϢѧѧϬϔϟϞϬѧѧγϭΓ˯ήѧѧϘϠϟΎΤѧѧοϭϥϮѧѧϜϳϭΔѧѧϠϜϴϬϤϟΔѧѧΠϣήΒϟΕΎϔѧѧλϪѧѧϴϓήϓϮѧѧΘΗ

ήϳϮτΘϟϭ ΔΤϴΤλΔϘΣϼϟΔϴϋήϔϟΞϣήΒϟϥϮϜΘϟΞϣΎϧήΒϟΔϣΪϘϣϲϓϲϟΎΘϟϒϳήόΘϟΩϮΟϭνήΘϔϧϭ

includeltiostreamhgt includeltstdlibhgt const size=20 int stack[size] int top int item

1- ŽŶƨưƫřŌLjųLJƾƗźƟŪƯŚƳźŝ void clearstack() top=-1

ϞѧόΠΑ˯ΎѧϔΘϛϻϭήϔѧμϠϟΔϳϭΎѧδϣΎϬϠόΟϭΔϓϮϔμϤϟϊϗϮϣϊϴϤΟϰϠϋέϭήϤϠϟΔΟΎΤϟϡΪϋφΣϻήηΆϤϟ

)top=-1 (ΔϳΪΑϲϓϰϋΪΘδϳϲϋήϔϟΞϣΎϧήΒϟάϫϭαΪϜϤϟΞϣήΑϊϣϞϣΎόΘϟ ϠόΠϟϪ ΎϴϟΎΧ 2- ŽŶƨưƫřŌLjŤƯœƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int fullstack() if(topgt=size-1) return(1) else return(0)

ΝήΨϤϟϥϮϜϳΔϟΪϟϩάϫΎϬϟήηΆϤϟΔϤϴϗΐΟϮϤΑ)top (ΎϣϮϫ1 )true (αΪϜϤϟϥϮϜϳΎϣΪϨϋϪΘϤϴϗϥϮϜΗϭ˯ϮϠϤϣ0 )false (˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϜϳΎϣΪϨϋ ΞϣΎϧήΒϟϭ ϲϋήϔϟ

)fullstack(ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure push (ΔϓΎοϹΔϴϠϤϋάϔϨϴϟ 3- ŽŶƨưƫřƺƬųƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int emptystack()

˻˺

if(top==-1) return(1) else return(0)

ΝήѧѧΨϤϟϥϮѧѧϜϳΔѧѧϟΪϟϩάѧѧϫ ΎѧѧϬϟ ήѧѧηΆϤϟΔѧѧϤϴϗΐѧѧΟϮϤΑ)top (ΎѧѧϣϮϫ1 )true (ϥϮѧѧϜϳΎϣΪѧѧϨϋϭΎѧѧѧѧѧϴϟΎΧαΪѧѧѧѧѧϜϤϟ0 )false( ϲѧѧѧѧѧϋήϔϟΞϣΎѧѧѧѧѧϧήΒϟάѧѧѧѧѧϫϭϝΎѧѧѧѧѧΧήѧѧѧѧѧϴϏαΪѧѧѧѧѧϜϤϟϥϮѧѧѧѧѧϜϳΎϣΪѧѧѧѧѧϨϋ

)emptystack (ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure pop (ϑάΤϟΔϴϠϤϋάϔϨϳϱάϟ 4-ŽŶƨưƫřƼƫřŶůřƹźƈƴƗŠƟŚƋLJƾƗźƟŪƯŚƳźŝ

void push(int item) if(fullstack()) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0) else top=top+1 stack[top]=item

ΪѧѧΣϭήѧѧμϨϋϒϴѧѧπϳϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫ)item (ΞϣΎѧѧϧήΒϟϲѧѧϓϪΎϋΪΘѧѧγϦѧѧϜϤϳϭαΪѧѧϜϤϠϟϲδϴήϟ)main program (ϞΜϣέήϜΘϟΕίΎόϳΪΣϡΪΨΘγ΄ΑΕήϤϟϦϣΩΪϋϱ΄Α)forhellipDo

while (ήμϨόϟΓ˯ήϗϦϤπΘϳϱάϟ)item (ϲѧϋήϔϟΞϣΎѧϧήΒϟ˯ΎϋΪΘѧγϢѧΛ)push (ϰѧϟϪΘϓΎѧοϻαΪϜϤϟ

5- ŽŶƨưƫřƲƯŶůřƹźƈƴƗƝŸŰƫƾƗźƟŪƯŚƳźŝ void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0)

˻˻

else item=stack[top] top=top-1

ϪѧѧѧϴϟήϴѧѧѧθϳϱάѧѧѧϟήѧѧѧμϨόϟάѧѧѧΧ΄ϳϲѧѧѧϋήϔϟΞϣΎѧѧѧϧήΒϟάѧѧѧϫ)top (ήѧѧѧϴϐΘϤϟϲѧѧѧϓϪΨѧѧѧδϨϳϭ)item (ϖϴϘΤΘϟΔϨϴόϣΔΠϟΎόϤΑΎϘΣϻϪϣΪΨΘγϻαΪϜϤϟϦϣήμϨόϟάϫΐΤγϪϠΟϦϣϱάϟνήϐϟ

ϰϋΪΘѧδϳΞϣΎѧϧήΒϟάѧϫϥΎѧϓΔѧόΑΎΘΘϣΓέϮѧμΑαΪѧϜϤϟϦѧϣήѧμϨϋϦϣήΜϛΐΤγϭϑάΣνήϐϟϭϲδϴήϟΞϣΎѧϧήΒϟϦѧϣϊѧϗϮϣϱϲѧϓϭΕήѧϤϟϦѧϣΩΪѧϋϱΎΑέΎѧθϤϟέήѧϜΘϟώϴѧλϯΪѧΣϡΪΨΘѧγΎΑˬ

ΎϬϴϟ 3-2-4 ŶǀƤƫřƭřŶŴŤſŚŝŽŶƨưƫřƢǀŞƐţ

ϲѧѧѧϓήѧѧѧηΆϤϟϒѧѧѧϳήόΗΩέϭΔϓϮϔѧѧѧμϤϟϡΪΨΘѧѧѧγΎΑϖΑΎѧѧѧδϟϖѧѧѧϴΒτΘϟ)top (ϦѧѧѧϋϞϘΘѧѧѧδϣήѧѧѧϴϐΘϤϛαΪѧϜϤϟϞѧΜϤΗϲѧΘϟΔϓϮϔμϤϟˬΪѧϴϘϟϡΪΨΘѧδϧΎѧϨϫΎѧϨϧϻ)Record (ϲϧΎѧϴΑϞѧϜϴϬϛΎѧόϣΎѧϤϬϠϴΜϤΗϲѧϓ

ϮѧϫϲϧΎѧΜϟ˯ΰѧΠϟϭΔϓϮϔѧμϣϞϜѧηϰϠϋϮѧϫϭαΪѧϜϤϟϞѧΜϤϳϝϭϷϦϳΰΟϦϣΪϴϘϟϥϮϜΘϳΚϴΣΪΣϭΆϤϟϞΜϤϳϞϘΣήη)top (ϲΗϻΎϛϑήόϳϭ

int item const size=10 struct stack int top int element[size] st sttop=-1 stack

element Ϯϫ˯ΰΠϟάϫ top

ϢγΎΑϡΪΨΘδϳϭsttop ϢγΎΑϡΪΨΘδϳϭstelement[index] ΔϴϟΎΘϟΕϮτΨϟϊΒΘϧαΪϜϤϟάϬϟΪϳΪΟήμϨϋΔϓΎοϻ

1-ήηΆϤϟΔϤϴϗΙΪΤϧ)top (ΪϴϘϟϲϓϞϘΣϮϫϱάϟstack Βμϴϟ)(3 sttop=sttop+1

2-ΪϳΪΠϟήμϨόϟϒϴπϧ)D(ΪϳΪΠϟϊϗϮϤϟϲϓ)3 ( stelement[sttop]=D

ΔϴϟΎΘϟΓέϮμϟΎΑαΪϜϤϟΒμϳάϬΑϭ stack

A B C 3

A B C D 3

kholood alharthi

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 4: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˺

ήѧѧμϨόϟΝήѧѧΧϻϭ)2 (ήѧѧμϨόϟΝήѧѧΧΐѧѧΠϳΔѧѧϴϟΎΤϟϪѧѧΘϟΎΤΑαΪѧѧϜϤϟϦѧѧϣ)3 (άѧѧϫϥΎѧѧϓάѧѧϟϪѧѧϠΒϗΕΎΟήΨϤϟϦϣϞδϠδΘϟ)42315(ϩάϴϔϨΗϦϜϤϳϻ

ũƕźƠƫř ΔΑϮϠτϤϟΕΎΟήΨϤϟ)45123(

ϦϳήμϨόϟΝήΧϦϜϤϳ54 ΔϴΗϵΕΎϴϠϤόϟΔϠδϠγάϴϔϨΗΪόΑ 5 4 3 2 1 ΕϼΧΪϤϟ

U S U S S S S ΔϠδϠγ ΕΎϴϠϤόϟ 5 4 ΕΎΟήΨϤϟ

αΪϜϤϟΕΎϳϮΘΤϣΒμΘγϭ

3 2 1

ήμϨόϟΝήΧέάόΘϴγΎϨϫϭ)1 (ϦϳήμϨόϟϞΒϗ)23 (ΕΎΟήΨϤϟϞδϠδΗϥΎϓάϟ)45123 (

ϴΤλήϴϏ ƫřŵƕźƠ ΔΑϮϠτϤϟΕΎΟήΨϤϟ)43521(

ϲΗϵϞδϠδΘϟΎΑΝήΧϹϭϝΎΧΩϹΕΎϴϠϤϋάϴϔϨΗΪϨϋΕΎΟήΨϤϟϩάϫϰϠϋϝϮμΤϟϦϜϤϳ 5 4 3 2 1 ΕϼΧΪϤϟ

U U U S U U S S S S ΔϠδϠγΕΎϴϠϤόϟ

1 2 5 3 4 ΕΎΟήΨϤϟ

3-2-1 ΔϓϮϔμϤϟϡΪΨΘγΎΑαΪϜϤϟϞϴΜϤΗArray Representation Of Stack

˺

ΔѧѧΑϮϠτϤϟΔόѧѧδϟΎΑΔѧѧϳΩΎΣΔϓϮϔѧѧμϣϡΪΨΘѧѧγΎΑαΪѧѧϜϤϟϖѧѧϴΒτΗϦѧѧϜϤϳ)size (ΐѧѧγΎϨϤϟωϮϨϟΎѧѧΑϭΕΎϧΎϴΒϠϟ)Data Type (ϪѧϴϓϥΰΨΘѧγϲѧΘϟ )float int Φѧϟ (ϰϋΪѧϳϞϘΘѧδϣήѧϴϐΘϣϡΪΨΘѧγϊѧϣ

)Top (ήϴθϳήηΆϤϛϞϤόΘδϳαΪϜϤϟϲϓήμϨϋϰϠϋϊϗϮϣϰϟ)ΔѧϳΎϬϨϟϰѧϟήѧμϨϋΏήѧϗϊѧϗϮϣΔΣϮΘϔϤϟ(ήηΆϤϟΔϤϴϗϥϮϜΗ˯ΪΘΑϭ)Top=-1 (ήѧλΎϨόϟϦѧϣΎѧϴϟΎΧαΪϜϤϟϥϮϜϳΎϣΪϨϋˬϑήѧόϳϭ

ϲΗϵΎϛΎϴΠϣήΑαΪϜϤϟ const

size=9 int stack[size] int top = -1 top=8

top=3

top=-1 top=0

αΪϜϣϲϟΎΧ ϱϮΤϳαΪϜϣ ϱϮΤϳαΪϜϣ ϱϮΤϳ9

ήλΎϨόϟϦϣ ΪΣϭήμϨϋ 4 ήλΎϨϋ ήλΎϨϋ

ŽŶƨưƬƫŠƟŚƋDžřŠǀƬưƗ)push(

ΔϴΗϵΕϮτΨϟϊΒΘϧϴΤλϞϜθΑΔϓΎοϹΔϴϠϤϋάϴϔϨΘϟ 1-Θϟ˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϛϦϣϖϘΤ)not full (ήηΆϤϟϥϱtopltsize-1 ΔϟΎΣΐϨΠΘϟ

ξϴϔϟ)over flow (ΔϓΎοϹΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top+1 ϲϟΎΘϟϊϗϮϤϟϰϟήϴθϴϟ )ύέΎϔϟ( 3- ΪϳΪΠϟϊϗϮϤϟϲϓΪϳΪΠϟήμϨόϟΔϓΎοstack[top]

ŶƨưƫřƲƯƝŸŰƫřŠǀƬưƗ)pop( ΔϴΗϵΕϮτΨϟϖϓϭϥϮϜΗϥΐΠϳαΪϜϤϟϦϣήμϨϋϱϑάΣΔϴϠϤϋάϴϔϨΗϥ

1-ϝΎѧѧΧήѧѧϴϏαΪѧѧϜϤϟϥ΄ѧѧΑϖѧѧϘΤΘϟ)not Empty (ήѧѧηΆϤϟϥϱtop=-1 ξϴѧѧϐϟΔѧѧϟΎΣΐѧѧϨΠΘϟ)under flow (ϑάΤϟΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ϪϴϟήϴθϳϱάϟϊϗϮϤϟϦϣήμϨόϟάΧ)top (ϓΎϴΘϗϭϪϧΰΧϭϞϘΘδϣήϴϐΘϣϲ

A

I H G F E D C B A

D C B

A

˺

Item=stack[top] 3- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top-1 ϑάΣϱάϟήμϨόϠϟϲϟΎΘϟήμϨόϟϊϗϮϣϰϟήϴθϴϟ

ΔψΣϼϣ ϦϴΗϮτΨϟϥϩϼϋπΘϳ32 ΐϴΗήΘϟΔγϮϜόϣϑάΤϟΔϴϠϤϋϲϓΔϴϠϤϋϲϓΎϬϨϋ

ΔϓΎοϹ 3-2-2 ŽŶƨưƫřšŚǀƯŻŹřƺųStacks Algorithms ΎѧϬϠϴΜϤΗϭΎѧϬΘΠϣήΑϢѧΛϦѧϣϭαΪѧϜϤϟΕΎϴϟΎόϓΔϴτϐΘϟΕΎϴϣίέϮΨϟϦϣΔϋϮϤΠϣϢϴϤμΗϦϜϤϳ

ΎϴϠϤϋ 1-ΔϓΎοϹΔϴϣίέϮΧpush Algorithm

if stack is full Then Over flow True Else Over flow false Top Top+1 Stack[top] New element

2- ϑάΤϟΕΎϴϣίέϮΧpop Algorithm if Stack is Empty

Then Under flow True Else under flow false element stack[top] Top=Top-1

3- αΪϜϤϟ˯ϞϣΔϴϣίέϮΧStack full ήѧѧηΆϤϟΔѧѧϤϴϗϰѧѧϠϋΩΎѧѧϤΘϋϻϡ˯ϮѧϠϤϣαΪѧѧϜϤϟϞѧѧϫϦѧѧϣϖѧѧϘΤΘϠϟΔѧѧϴϣίέϮΨϟϩάѧϫ)Top (ϞѧѧΒϗ

ΔϓΎοϹΕΎϴϠϤϋ If Top=size-1 Then stackfull True

4- αΪϜϤϟϮϠΧΔϴϣίέϮΧStack Empty ϩάϫήηΆϤϟΔϤϴϗϰϠϋΪϤΘϋϻϡϝΎΧαΪϜϤϟϥϞϫϦϣϖϘΤΘϠϟΔϴϣίέϮΨϟ)Top (ΔϴϠϤϋϞΒϗ

ϑάΤϟ If Top=-1

˻˹

Then stackempty True 5- αΪϜϤϟ˯ϼΧΔϴϣίέϮΧClearStack

ϦϣϪϼΧϭαΪϜϤϟΔΌϴϬΗνήϐϟϡΪΨΘδΗΔϴϣίέϮΨϟϩάϫήηΆϤϟΔϤϴϗϞόΠΑήλΎϨόϟ)top=-1( Top -1

3-2-3 ŽŶƨưƫřšŚǀƬưƗŸǀƠƴŤƫŠǀƗźƠƫřŪƯřźŞƫř ΔѧѧϴϋήϓΞϣήѧѧΑϢϴϤѧѧμΗϥ)functions procedures (ΕΎѧѧϴϠϤϋϦѧѧϣΔѧѧϴϠϤϋϭΔѧѧϴϟΎόϓϞѧѧϜϟ

ϭΞϣΎѧϧήΑϲѧϓΎѧϬόϴϤΠΗϢΛϦϣϭΕΎϴϠϤόϟϚϠΗΔΠϣήΑΔϴϔϴϛϴοϮΗϭςϴδΒΗϰϠϋΪϋΎδΗαΪϜϤϟΪѧΣΚϳΪѧѧΤΘϟϭΔѧѧόΑΎΘϤϟϭϢѧѧϬϔϟϞϬѧѧγϭΓ˯ήѧѧϘϠϟΎΤѧѧοϭϥϮѧѧϜϳϭΔѧѧϠϜϴϬϤϟΔѧѧΠϣήΒϟΕΎϔѧѧλϪѧѧϴϓήϓϮѧѧΘΗ

ήϳϮτΘϟϭ ΔΤϴΤλΔϘΣϼϟΔϴϋήϔϟΞϣήΒϟϥϮϜΘϟΞϣΎϧήΒϟΔϣΪϘϣϲϓϲϟΎΘϟϒϳήόΘϟΩϮΟϭνήΘϔϧϭ

includeltiostreamhgt includeltstdlibhgt const size=20 int stack[size] int top int item

1- ŽŶƨưƫřŌLjųLJƾƗźƟŪƯŚƳźŝ void clearstack() top=-1

ϞѧόΠΑ˯ΎѧϔΘϛϻϭήϔѧμϠϟΔϳϭΎѧδϣΎϬϠόΟϭΔϓϮϔμϤϟϊϗϮϣϊϴϤΟϰϠϋέϭήϤϠϟΔΟΎΤϟϡΪϋφΣϻήηΆϤϟ

)top=-1 (ΔϳΪΑϲϓϰϋΪΘδϳϲϋήϔϟΞϣΎϧήΒϟάϫϭαΪϜϤϟΞϣήΑϊϣϞϣΎόΘϟ ϠόΠϟϪ ΎϴϟΎΧ 2- ŽŶƨưƫřŌLjŤƯœƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int fullstack() if(topgt=size-1) return(1) else return(0)

ΝήΨϤϟϥϮϜϳΔϟΪϟϩάϫΎϬϟήηΆϤϟΔϤϴϗΐΟϮϤΑ)top (ΎϣϮϫ1 )true (αΪϜϤϟϥϮϜϳΎϣΪϨϋϪΘϤϴϗϥϮϜΗϭ˯ϮϠϤϣ0 )false (˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϜϳΎϣΪϨϋ ΞϣΎϧήΒϟϭ ϲϋήϔϟ

)fullstack(ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure push (ΔϓΎοϹΔϴϠϤϋάϔϨϴϟ 3- ŽŶƨưƫřƺƬųƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int emptystack()

˻˺

if(top==-1) return(1) else return(0)

ΝήѧѧΨϤϟϥϮѧѧϜϳΔѧѧϟΪϟϩάѧѧϫ ΎѧѧϬϟ ήѧѧηΆϤϟΔѧѧϤϴϗΐѧѧΟϮϤΑ)top (ΎѧѧϣϮϫ1 )true (ϥϮѧѧϜϳΎϣΪѧѧϨϋϭΎѧѧѧѧѧϴϟΎΧαΪѧѧѧѧѧϜϤϟ0 )false( ϲѧѧѧѧѧϋήϔϟΞϣΎѧѧѧѧѧϧήΒϟάѧѧѧѧѧϫϭϝΎѧѧѧѧѧΧήѧѧѧѧѧϴϏαΪѧѧѧѧѧϜϤϟϥϮѧѧѧѧѧϜϳΎϣΪѧѧѧѧѧϨϋ

)emptystack (ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure pop (ϑάΤϟΔϴϠϤϋάϔϨϳϱάϟ 4-ŽŶƨưƫřƼƫřŶůřƹźƈƴƗŠƟŚƋLJƾƗźƟŪƯŚƳźŝ

void push(int item) if(fullstack()) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0) else top=top+1 stack[top]=item

ΪѧѧΣϭήѧѧμϨϋϒϴѧѧπϳϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫ)item (ΞϣΎѧѧϧήΒϟϲѧѧϓϪΎϋΪΘѧѧγϦѧѧϜϤϳϭαΪѧѧϜϤϠϟϲδϴήϟ)main program (ϞΜϣέήϜΘϟΕίΎόϳΪΣϡΪΨΘγ΄ΑΕήϤϟϦϣΩΪϋϱ΄Α)forhellipDo

while (ήμϨόϟΓ˯ήϗϦϤπΘϳϱάϟ)item (ϲѧϋήϔϟΞϣΎѧϧήΒϟ˯ΎϋΪΘѧγϢѧΛ)push (ϰѧϟϪΘϓΎѧοϻαΪϜϤϟ

5- ŽŶƨưƫřƲƯŶůřƹźƈƴƗƝŸŰƫƾƗźƟŪƯŚƳźŝ void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0)

˻˻

else item=stack[top] top=top-1

ϪѧѧѧϴϟήϴѧѧѧθϳϱάѧѧѧϟήѧѧѧμϨόϟάѧѧѧΧ΄ϳϲѧѧѧϋήϔϟΞϣΎѧѧѧϧήΒϟάѧѧѧϫ)top (ήѧѧѧϴϐΘϤϟϲѧѧѧϓϪΨѧѧѧδϨϳϭ)item (ϖϴϘΤΘϟΔϨϴόϣΔΠϟΎόϤΑΎϘΣϻϪϣΪΨΘγϻαΪϜϤϟϦϣήμϨόϟάϫΐΤγϪϠΟϦϣϱάϟνήϐϟ

ϰϋΪΘѧδϳΞϣΎѧϧήΒϟάѧϫϥΎѧϓΔѧόΑΎΘΘϣΓέϮѧμΑαΪѧϜϤϟϦѧϣήѧμϨϋϦϣήΜϛΐΤγϭϑάΣνήϐϟϭϲδϴήϟΞϣΎѧϧήΒϟϦѧϣϊѧϗϮϣϱϲѧϓϭΕήѧϤϟϦѧϣΩΪѧϋϱΎΑέΎѧθϤϟέήѧϜΘϟώϴѧλϯΪѧΣϡΪΨΘѧγΎΑˬ

ΎϬϴϟ 3-2-4 ŶǀƤƫřƭřŶŴŤſŚŝŽŶƨưƫřƢǀŞƐţ

ϲѧѧѧϓήѧѧѧηΆϤϟϒѧѧѧϳήόΗΩέϭΔϓϮϔѧѧѧμϤϟϡΪΨΘѧѧѧγΎΑϖΑΎѧѧѧδϟϖѧѧѧϴΒτΘϟ)top (ϦѧѧѧϋϞϘΘѧѧѧδϣήѧѧѧϴϐΘϤϛαΪѧϜϤϟϞѧΜϤΗϲѧΘϟΔϓϮϔμϤϟˬΪѧϴϘϟϡΪΨΘѧδϧΎѧϨϫΎѧϨϧϻ)Record (ϲϧΎѧϴΑϞѧϜϴϬϛΎѧόϣΎѧϤϬϠϴΜϤΗϲѧϓ

ϮѧϫϲϧΎѧΜϟ˯ΰѧΠϟϭΔϓϮϔѧμϣϞϜѧηϰϠϋϮѧϫϭαΪѧϜϤϟϞѧΜϤϳϝϭϷϦϳΰΟϦϣΪϴϘϟϥϮϜΘϳΚϴΣΪΣϭΆϤϟϞΜϤϳϞϘΣήη)top (ϲΗϻΎϛϑήόϳϭ

int item const size=10 struct stack int top int element[size] st sttop=-1 stack

element Ϯϫ˯ΰΠϟάϫ top

ϢγΎΑϡΪΨΘδϳϭsttop ϢγΎΑϡΪΨΘδϳϭstelement[index] ΔϴϟΎΘϟΕϮτΨϟϊΒΘϧαΪϜϤϟάϬϟΪϳΪΟήμϨϋΔϓΎοϻ

1-ήηΆϤϟΔϤϴϗΙΪΤϧ)top (ΪϴϘϟϲϓϞϘΣϮϫϱάϟstack Βμϴϟ)(3 sttop=sttop+1

2-ΪϳΪΠϟήμϨόϟϒϴπϧ)D(ΪϳΪΠϟϊϗϮϤϟϲϓ)3 ( stelement[sttop]=D

ΔϴϟΎΘϟΓέϮμϟΎΑαΪϜϤϟΒμϳάϬΑϭ stack

A B C 3

A B C D 3

kholood alharthi

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 5: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˺

ΔѧѧΑϮϠτϤϟΔόѧѧδϟΎΑΔѧѧϳΩΎΣΔϓϮϔѧѧμϣϡΪΨΘѧѧγΎΑαΪѧѧϜϤϟϖѧѧϴΒτΗϦѧѧϜϤϳ)size (ΐѧѧγΎϨϤϟωϮϨϟΎѧѧΑϭΕΎϧΎϴΒϠϟ)Data Type (ϪѧϴϓϥΰΨΘѧγϲѧΘϟ )float int Φѧϟ (ϰϋΪѧϳϞϘΘѧδϣήѧϴϐΘϣϡΪΨΘѧγϊѧϣ

)Top (ήϴθϳήηΆϤϛϞϤόΘδϳαΪϜϤϟϲϓήμϨϋϰϠϋϊϗϮϣϰϟ)ΔѧϳΎϬϨϟϰѧϟήѧμϨϋΏήѧϗϊѧϗϮϣΔΣϮΘϔϤϟ(ήηΆϤϟΔϤϴϗϥϮϜΗ˯ΪΘΑϭ)Top=-1 (ήѧλΎϨόϟϦѧϣΎѧϴϟΎΧαΪϜϤϟϥϮϜϳΎϣΪϨϋˬϑήѧόϳϭ

ϲΗϵΎϛΎϴΠϣήΑαΪϜϤϟ const

size=9 int stack[size] int top = -1 top=8

top=3

top=-1 top=0

αΪϜϣϲϟΎΧ ϱϮΤϳαΪϜϣ ϱϮΤϳαΪϜϣ ϱϮΤϳ9

ήλΎϨόϟϦϣ ΪΣϭήμϨϋ 4 ήλΎϨϋ ήλΎϨϋ

ŽŶƨưƬƫŠƟŚƋDžřŠǀƬưƗ)push(

ΔϴΗϵΕϮτΨϟϊΒΘϧϴΤλϞϜθΑΔϓΎοϹΔϴϠϤϋάϴϔϨΘϟ 1-Θϟ˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϛϦϣϖϘΤ)not full (ήηΆϤϟϥϱtopltsize-1 ΔϟΎΣΐϨΠΘϟ

ξϴϔϟ)over flow (ΔϓΎοϹΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top+1 ϲϟΎΘϟϊϗϮϤϟϰϟήϴθϴϟ )ύέΎϔϟ( 3- ΪϳΪΠϟϊϗϮϤϟϲϓΪϳΪΠϟήμϨόϟΔϓΎοstack[top]

ŶƨưƫřƲƯƝŸŰƫřŠǀƬưƗ)pop( ΔϴΗϵΕϮτΨϟϖϓϭϥϮϜΗϥΐΠϳαΪϜϤϟϦϣήμϨϋϱϑάΣΔϴϠϤϋάϴϔϨΗϥ

1-ϝΎѧѧΧήѧѧϴϏαΪѧѧϜϤϟϥ΄ѧѧΑϖѧѧϘΤΘϟ)not Empty (ήѧѧηΆϤϟϥϱtop=-1 ξϴѧѧϐϟΔѧѧϟΎΣΐѧѧϨΠΘϟ)under flow (ϑάΤϟΔϴϠϤϋάϴϔϨΗέάόΗϭ 2- ϪϴϟήϴθϳϱάϟϊϗϮϤϟϦϣήμϨόϟάΧ)top (ϓΎϴΘϗϭϪϧΰΧϭϞϘΘδϣήϴϐΘϣϲ

A

I H G F E D C B A

D C B

A

˺

Item=stack[top] 3- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top-1 ϑάΣϱάϟήμϨόϠϟϲϟΎΘϟήμϨόϟϊϗϮϣϰϟήϴθϴϟ

ΔψΣϼϣ ϦϴΗϮτΨϟϥϩϼϋπΘϳ32 ΐϴΗήΘϟΔγϮϜόϣϑάΤϟΔϴϠϤϋϲϓΔϴϠϤϋϲϓΎϬϨϋ

ΔϓΎοϹ 3-2-2 ŽŶƨưƫřšŚǀƯŻŹřƺųStacks Algorithms ΎѧϬϠϴΜϤΗϭΎѧϬΘΠϣήΑϢѧΛϦѧϣϭαΪѧϜϤϟΕΎϴϟΎόϓΔϴτϐΘϟΕΎϴϣίέϮΨϟϦϣΔϋϮϤΠϣϢϴϤμΗϦϜϤϳ

ΎϴϠϤϋ 1-ΔϓΎοϹΔϴϣίέϮΧpush Algorithm

if stack is full Then Over flow True Else Over flow false Top Top+1 Stack[top] New element

2- ϑάΤϟΕΎϴϣίέϮΧpop Algorithm if Stack is Empty

Then Under flow True Else under flow false element stack[top] Top=Top-1

3- αΪϜϤϟ˯ϞϣΔϴϣίέϮΧStack full ήѧѧηΆϤϟΔѧѧϤϴϗϰѧѧϠϋΩΎѧѧϤΘϋϻϡ˯ϮѧϠϤϣαΪѧѧϜϤϟϞѧѧϫϦѧѧϣϖѧѧϘΤΘϠϟΔѧѧϴϣίέϮΨϟϩάѧϫ)Top (ϞѧѧΒϗ

ΔϓΎοϹΕΎϴϠϤϋ If Top=size-1 Then stackfull True

4- αΪϜϤϟϮϠΧΔϴϣίέϮΧStack Empty ϩάϫήηΆϤϟΔϤϴϗϰϠϋΪϤΘϋϻϡϝΎΧαΪϜϤϟϥϞϫϦϣϖϘΤΘϠϟΔϴϣίέϮΨϟ)Top (ΔϴϠϤϋϞΒϗ

ϑάΤϟ If Top=-1

˻˹

Then stackempty True 5- αΪϜϤϟ˯ϼΧΔϴϣίέϮΧClearStack

ϦϣϪϼΧϭαΪϜϤϟΔΌϴϬΗνήϐϟϡΪΨΘδΗΔϴϣίέϮΨϟϩάϫήηΆϤϟΔϤϴϗϞόΠΑήλΎϨόϟ)top=-1( Top -1

3-2-3 ŽŶƨưƫřšŚǀƬưƗŸǀƠƴŤƫŠǀƗźƠƫřŪƯřźŞƫř ΔѧѧϴϋήϓΞϣήѧѧΑϢϴϤѧѧμΗϥ)functions procedures (ΕΎѧѧϴϠϤϋϦѧѧϣΔѧѧϴϠϤϋϭΔѧѧϴϟΎόϓϞѧѧϜϟ

ϭΞϣΎѧϧήΑϲѧϓΎѧϬόϴϤΠΗϢΛϦϣϭΕΎϴϠϤόϟϚϠΗΔΠϣήΑΔϴϔϴϛϴοϮΗϭςϴδΒΗϰϠϋΪϋΎδΗαΪϜϤϟΪѧΣΚϳΪѧѧΤΘϟϭΔѧѧόΑΎΘϤϟϭϢѧѧϬϔϟϞϬѧѧγϭΓ˯ήѧѧϘϠϟΎΤѧѧοϭϥϮѧѧϜϳϭΔѧѧϠϜϴϬϤϟΔѧѧΠϣήΒϟΕΎϔѧѧλϪѧѧϴϓήϓϮѧѧΘΗ

ήϳϮτΘϟϭ ΔΤϴΤλΔϘΣϼϟΔϴϋήϔϟΞϣήΒϟϥϮϜΘϟΞϣΎϧήΒϟΔϣΪϘϣϲϓϲϟΎΘϟϒϳήόΘϟΩϮΟϭνήΘϔϧϭ

includeltiostreamhgt includeltstdlibhgt const size=20 int stack[size] int top int item

1- ŽŶƨưƫřŌLjųLJƾƗźƟŪƯŚƳźŝ void clearstack() top=-1

ϞѧόΠΑ˯ΎѧϔΘϛϻϭήϔѧμϠϟΔϳϭΎѧδϣΎϬϠόΟϭΔϓϮϔμϤϟϊϗϮϣϊϴϤΟϰϠϋέϭήϤϠϟΔΟΎΤϟϡΪϋφΣϻήηΆϤϟ

)top=-1 (ΔϳΪΑϲϓϰϋΪΘδϳϲϋήϔϟΞϣΎϧήΒϟάϫϭαΪϜϤϟΞϣήΑϊϣϞϣΎόΘϟ ϠόΠϟϪ ΎϴϟΎΧ 2- ŽŶƨưƫřŌLjŤƯœƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int fullstack() if(topgt=size-1) return(1) else return(0)

ΝήΨϤϟϥϮϜϳΔϟΪϟϩάϫΎϬϟήηΆϤϟΔϤϴϗΐΟϮϤΑ)top (ΎϣϮϫ1 )true (αΪϜϤϟϥϮϜϳΎϣΪϨϋϪΘϤϴϗϥϮϜΗϭ˯ϮϠϤϣ0 )false (˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϜϳΎϣΪϨϋ ΞϣΎϧήΒϟϭ ϲϋήϔϟ

)fullstack(ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure push (ΔϓΎοϹΔϴϠϤϋάϔϨϴϟ 3- ŽŶƨưƫřƺƬųƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int emptystack()

˻˺

if(top==-1) return(1) else return(0)

ΝήѧѧΨϤϟϥϮѧѧϜϳΔѧѧϟΪϟϩάѧѧϫ ΎѧѧϬϟ ήѧѧηΆϤϟΔѧѧϤϴϗΐѧѧΟϮϤΑ)top (ΎѧѧϣϮϫ1 )true (ϥϮѧѧϜϳΎϣΪѧѧϨϋϭΎѧѧѧѧѧϴϟΎΧαΪѧѧѧѧѧϜϤϟ0 )false( ϲѧѧѧѧѧϋήϔϟΞϣΎѧѧѧѧѧϧήΒϟάѧѧѧѧѧϫϭϝΎѧѧѧѧѧΧήѧѧѧѧѧϴϏαΪѧѧѧѧѧϜϤϟϥϮѧѧѧѧѧϜϳΎϣΪѧѧѧѧѧϨϋ

)emptystack (ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure pop (ϑάΤϟΔϴϠϤϋάϔϨϳϱάϟ 4-ŽŶƨưƫřƼƫřŶůřƹźƈƴƗŠƟŚƋLJƾƗźƟŪƯŚƳźŝ

void push(int item) if(fullstack()) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0) else top=top+1 stack[top]=item

ΪѧѧΣϭήѧѧμϨϋϒϴѧѧπϳϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫ)item (ΞϣΎѧѧϧήΒϟϲѧѧϓϪΎϋΪΘѧѧγϦѧѧϜϤϳϭαΪѧѧϜϤϠϟϲδϴήϟ)main program (ϞΜϣέήϜΘϟΕίΎόϳΪΣϡΪΨΘγ΄ΑΕήϤϟϦϣΩΪϋϱ΄Α)forhellipDo

while (ήμϨόϟΓ˯ήϗϦϤπΘϳϱάϟ)item (ϲѧϋήϔϟΞϣΎѧϧήΒϟ˯ΎϋΪΘѧγϢѧΛ)push (ϰѧϟϪΘϓΎѧοϻαΪϜϤϟ

5- ŽŶƨưƫřƲƯŶůřƹźƈƴƗƝŸŰƫƾƗźƟŪƯŚƳźŝ void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0)

˻˻

else item=stack[top] top=top-1

ϪѧѧѧϴϟήϴѧѧѧθϳϱάѧѧѧϟήѧѧѧμϨόϟάѧѧѧΧ΄ϳϲѧѧѧϋήϔϟΞϣΎѧѧѧϧήΒϟάѧѧѧϫ)top (ήѧѧѧϴϐΘϤϟϲѧѧѧϓϪΨѧѧѧδϨϳϭ)item (ϖϴϘΤΘϟΔϨϴόϣΔΠϟΎόϤΑΎϘΣϻϪϣΪΨΘγϻαΪϜϤϟϦϣήμϨόϟάϫΐΤγϪϠΟϦϣϱάϟνήϐϟ

ϰϋΪΘѧδϳΞϣΎѧϧήΒϟάѧϫϥΎѧϓΔѧόΑΎΘΘϣΓέϮѧμΑαΪѧϜϤϟϦѧϣήѧμϨϋϦϣήΜϛΐΤγϭϑάΣνήϐϟϭϲδϴήϟΞϣΎѧϧήΒϟϦѧϣϊѧϗϮϣϱϲѧϓϭΕήѧϤϟϦѧϣΩΪѧϋϱΎΑέΎѧθϤϟέήѧϜΘϟώϴѧλϯΪѧΣϡΪΨΘѧγΎΑˬ

ΎϬϴϟ 3-2-4 ŶǀƤƫřƭřŶŴŤſŚŝŽŶƨưƫřƢǀŞƐţ

ϲѧѧѧϓήѧѧѧηΆϤϟϒѧѧѧϳήόΗΩέϭΔϓϮϔѧѧѧμϤϟϡΪΨΘѧѧѧγΎΑϖΑΎѧѧѧδϟϖѧѧѧϴΒτΘϟ)top (ϦѧѧѧϋϞϘΘѧѧѧδϣήѧѧѧϴϐΘϤϛαΪѧϜϤϟϞѧΜϤΗϲѧΘϟΔϓϮϔμϤϟˬΪѧϴϘϟϡΪΨΘѧδϧΎѧϨϫΎѧϨϧϻ)Record (ϲϧΎѧϴΑϞѧϜϴϬϛΎѧόϣΎѧϤϬϠϴΜϤΗϲѧϓ

ϮѧϫϲϧΎѧΜϟ˯ΰѧΠϟϭΔϓϮϔѧμϣϞϜѧηϰϠϋϮѧϫϭαΪѧϜϤϟϞѧΜϤϳϝϭϷϦϳΰΟϦϣΪϴϘϟϥϮϜΘϳΚϴΣΪΣϭΆϤϟϞΜϤϳϞϘΣήη)top (ϲΗϻΎϛϑήόϳϭ

int item const size=10 struct stack int top int element[size] st sttop=-1 stack

element Ϯϫ˯ΰΠϟάϫ top

ϢγΎΑϡΪΨΘδϳϭsttop ϢγΎΑϡΪΨΘδϳϭstelement[index] ΔϴϟΎΘϟΕϮτΨϟϊΒΘϧαΪϜϤϟάϬϟΪϳΪΟήμϨϋΔϓΎοϻ

1-ήηΆϤϟΔϤϴϗΙΪΤϧ)top (ΪϴϘϟϲϓϞϘΣϮϫϱάϟstack Βμϴϟ)(3 sttop=sttop+1

2-ΪϳΪΠϟήμϨόϟϒϴπϧ)D(ΪϳΪΠϟϊϗϮϤϟϲϓ)3 ( stelement[sttop]=D

ΔϴϟΎΘϟΓέϮμϟΎΑαΪϜϤϟΒμϳάϬΑϭ stack

A B C 3

A B C D 3

kholood alharthi

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 6: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˺

Item=stack[top] 3- ήηΆϤϟΔϤϴϗΚϳΪΤΗtop=top-1 ϑάΣϱάϟήμϨόϠϟϲϟΎΘϟήμϨόϟϊϗϮϣϰϟήϴθϴϟ

ΔψΣϼϣ ϦϴΗϮτΨϟϥϩϼϋπΘϳ32 ΐϴΗήΘϟΔγϮϜόϣϑάΤϟΔϴϠϤϋϲϓΔϴϠϤϋϲϓΎϬϨϋ

ΔϓΎοϹ 3-2-2 ŽŶƨưƫřšŚǀƯŻŹřƺųStacks Algorithms ΎѧϬϠϴΜϤΗϭΎѧϬΘΠϣήΑϢѧΛϦѧϣϭαΪѧϜϤϟΕΎϴϟΎόϓΔϴτϐΘϟΕΎϴϣίέϮΨϟϦϣΔϋϮϤΠϣϢϴϤμΗϦϜϤϳ

ΎϴϠϤϋ 1-ΔϓΎοϹΔϴϣίέϮΧpush Algorithm

if stack is full Then Over flow True Else Over flow false Top Top+1 Stack[top] New element

2- ϑάΤϟΕΎϴϣίέϮΧpop Algorithm if Stack is Empty

Then Under flow True Else under flow false element stack[top] Top=Top-1

3- αΪϜϤϟ˯ϞϣΔϴϣίέϮΧStack full ήѧѧηΆϤϟΔѧѧϤϴϗϰѧѧϠϋΩΎѧѧϤΘϋϻϡ˯ϮѧϠϤϣαΪѧѧϜϤϟϞѧѧϫϦѧѧϣϖѧѧϘΤΘϠϟΔѧѧϴϣίέϮΨϟϩάѧϫ)Top (ϞѧѧΒϗ

ΔϓΎοϹΕΎϴϠϤϋ If Top=size-1 Then stackfull True

4- αΪϜϤϟϮϠΧΔϴϣίέϮΧStack Empty ϩάϫήηΆϤϟΔϤϴϗϰϠϋΪϤΘϋϻϡϝΎΧαΪϜϤϟϥϞϫϦϣϖϘΤΘϠϟΔϴϣίέϮΨϟ)Top (ΔϴϠϤϋϞΒϗ

ϑάΤϟ If Top=-1

˻˹

Then stackempty True 5- αΪϜϤϟ˯ϼΧΔϴϣίέϮΧClearStack

ϦϣϪϼΧϭαΪϜϤϟΔΌϴϬΗνήϐϟϡΪΨΘδΗΔϴϣίέϮΨϟϩάϫήηΆϤϟΔϤϴϗϞόΠΑήλΎϨόϟ)top=-1( Top -1

3-2-3 ŽŶƨưƫřšŚǀƬưƗŸǀƠƴŤƫŠǀƗźƠƫřŪƯřźŞƫř ΔѧѧϴϋήϓΞϣήѧѧΑϢϴϤѧѧμΗϥ)functions procedures (ΕΎѧѧϴϠϤϋϦѧѧϣΔѧѧϴϠϤϋϭΔѧѧϴϟΎόϓϞѧѧϜϟ

ϭΞϣΎѧϧήΑϲѧϓΎѧϬόϴϤΠΗϢΛϦϣϭΕΎϴϠϤόϟϚϠΗΔΠϣήΑΔϴϔϴϛϴοϮΗϭςϴδΒΗϰϠϋΪϋΎδΗαΪϜϤϟΪѧΣΚϳΪѧѧΤΘϟϭΔѧѧόΑΎΘϤϟϭϢѧѧϬϔϟϞϬѧѧγϭΓ˯ήѧѧϘϠϟΎΤѧѧοϭϥϮѧѧϜϳϭΔѧѧϠϜϴϬϤϟΔѧѧΠϣήΒϟΕΎϔѧѧλϪѧѧϴϓήϓϮѧѧΘΗ

ήϳϮτΘϟϭ ΔΤϴΤλΔϘΣϼϟΔϴϋήϔϟΞϣήΒϟϥϮϜΘϟΞϣΎϧήΒϟΔϣΪϘϣϲϓϲϟΎΘϟϒϳήόΘϟΩϮΟϭνήΘϔϧϭ

includeltiostreamhgt includeltstdlibhgt const size=20 int stack[size] int top int item

1- ŽŶƨưƫřŌLjųLJƾƗźƟŪƯŚƳźŝ void clearstack() top=-1

ϞѧόΠΑ˯ΎѧϔΘϛϻϭήϔѧμϠϟΔϳϭΎѧδϣΎϬϠόΟϭΔϓϮϔμϤϟϊϗϮϣϊϴϤΟϰϠϋέϭήϤϠϟΔΟΎΤϟϡΪϋφΣϻήηΆϤϟ

)top=-1 (ΔϳΪΑϲϓϰϋΪΘδϳϲϋήϔϟΞϣΎϧήΒϟάϫϭαΪϜϤϟΞϣήΑϊϣϞϣΎόΘϟ ϠόΠϟϪ ΎϴϟΎΧ 2- ŽŶƨưƫřŌLjŤƯœƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int fullstack() if(topgt=size-1) return(1) else return(0)

ΝήΨϤϟϥϮϜϳΔϟΪϟϩάϫΎϬϟήηΆϤϟΔϤϴϗΐΟϮϤΑ)top (ΎϣϮϫ1 )true (αΪϜϤϟϥϮϜϳΎϣΪϨϋϪΘϤϴϗϥϮϜΗϭ˯ϮϠϤϣ0 )false (˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϜϳΎϣΪϨϋ ΞϣΎϧήΒϟϭ ϲϋήϔϟ

)fullstack(ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure push (ΔϓΎοϹΔϴϠϤϋάϔϨϴϟ 3- ŽŶƨưƫřƺƬųƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int emptystack()

˻˺

if(top==-1) return(1) else return(0)

ΝήѧѧΨϤϟϥϮѧѧϜϳΔѧѧϟΪϟϩάѧѧϫ ΎѧѧϬϟ ήѧѧηΆϤϟΔѧѧϤϴϗΐѧѧΟϮϤΑ)top (ΎѧѧϣϮϫ1 )true (ϥϮѧѧϜϳΎϣΪѧѧϨϋϭΎѧѧѧѧѧϴϟΎΧαΪѧѧѧѧѧϜϤϟ0 )false( ϲѧѧѧѧѧϋήϔϟΞϣΎѧѧѧѧѧϧήΒϟάѧѧѧѧѧϫϭϝΎѧѧѧѧѧΧήѧѧѧѧѧϴϏαΪѧѧѧѧѧϜϤϟϥϮѧѧѧѧѧϜϳΎϣΪѧѧѧѧѧϨϋ

)emptystack (ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure pop (ϑάΤϟΔϴϠϤϋάϔϨϳϱάϟ 4-ŽŶƨưƫřƼƫřŶůřƹźƈƴƗŠƟŚƋLJƾƗźƟŪƯŚƳźŝ

void push(int item) if(fullstack()) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0) else top=top+1 stack[top]=item

ΪѧѧΣϭήѧѧμϨϋϒϴѧѧπϳϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫ)item (ΞϣΎѧѧϧήΒϟϲѧѧϓϪΎϋΪΘѧѧγϦѧѧϜϤϳϭαΪѧѧϜϤϠϟϲδϴήϟ)main program (ϞΜϣέήϜΘϟΕίΎόϳΪΣϡΪΨΘγ΄ΑΕήϤϟϦϣΩΪϋϱ΄Α)forhellipDo

while (ήμϨόϟΓ˯ήϗϦϤπΘϳϱάϟ)item (ϲѧϋήϔϟΞϣΎѧϧήΒϟ˯ΎϋΪΘѧγϢѧΛ)push (ϰѧϟϪΘϓΎѧοϻαΪϜϤϟ

5- ŽŶƨưƫřƲƯŶůřƹźƈƴƗƝŸŰƫƾƗźƟŪƯŚƳźŝ void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0)

˻˻

else item=stack[top] top=top-1

ϪѧѧѧϴϟήϴѧѧѧθϳϱάѧѧѧϟήѧѧѧμϨόϟάѧѧѧΧ΄ϳϲѧѧѧϋήϔϟΞϣΎѧѧѧϧήΒϟάѧѧѧϫ)top (ήѧѧѧϴϐΘϤϟϲѧѧѧϓϪΨѧѧѧδϨϳϭ)item (ϖϴϘΤΘϟΔϨϴόϣΔΠϟΎόϤΑΎϘΣϻϪϣΪΨΘγϻαΪϜϤϟϦϣήμϨόϟάϫΐΤγϪϠΟϦϣϱάϟνήϐϟ

ϰϋΪΘѧδϳΞϣΎѧϧήΒϟάѧϫϥΎѧϓΔѧόΑΎΘΘϣΓέϮѧμΑαΪѧϜϤϟϦѧϣήѧμϨϋϦϣήΜϛΐΤγϭϑάΣνήϐϟϭϲδϴήϟΞϣΎѧϧήΒϟϦѧϣϊѧϗϮϣϱϲѧϓϭΕήѧϤϟϦѧϣΩΪѧϋϱΎΑέΎѧθϤϟέήѧϜΘϟώϴѧλϯΪѧΣϡΪΨΘѧγΎΑˬ

ΎϬϴϟ 3-2-4 ŶǀƤƫřƭřŶŴŤſŚŝŽŶƨưƫřƢǀŞƐţ

ϲѧѧѧϓήѧѧѧηΆϤϟϒѧѧѧϳήόΗΩέϭΔϓϮϔѧѧѧμϤϟϡΪΨΘѧѧѧγΎΑϖΑΎѧѧѧδϟϖѧѧѧϴΒτΘϟ)top (ϦѧѧѧϋϞϘΘѧѧѧδϣήѧѧѧϴϐΘϤϛαΪѧϜϤϟϞѧΜϤΗϲѧΘϟΔϓϮϔμϤϟˬΪѧϴϘϟϡΪΨΘѧδϧΎѧϨϫΎѧϨϧϻ)Record (ϲϧΎѧϴΑϞѧϜϴϬϛΎѧόϣΎѧϤϬϠϴΜϤΗϲѧϓ

ϮѧϫϲϧΎѧΜϟ˯ΰѧΠϟϭΔϓϮϔѧμϣϞϜѧηϰϠϋϮѧϫϭαΪѧϜϤϟϞѧΜϤϳϝϭϷϦϳΰΟϦϣΪϴϘϟϥϮϜΘϳΚϴΣΪΣϭΆϤϟϞΜϤϳϞϘΣήη)top (ϲΗϻΎϛϑήόϳϭ

int item const size=10 struct stack int top int element[size] st sttop=-1 stack

element Ϯϫ˯ΰΠϟάϫ top

ϢγΎΑϡΪΨΘδϳϭsttop ϢγΎΑϡΪΨΘδϳϭstelement[index] ΔϴϟΎΘϟΕϮτΨϟϊΒΘϧαΪϜϤϟάϬϟΪϳΪΟήμϨϋΔϓΎοϻ

1-ήηΆϤϟΔϤϴϗΙΪΤϧ)top (ΪϴϘϟϲϓϞϘΣϮϫϱάϟstack Βμϴϟ)(3 sttop=sttop+1

2-ΪϳΪΠϟήμϨόϟϒϴπϧ)D(ΪϳΪΠϟϊϗϮϤϟϲϓ)3 ( stelement[sttop]=D

ΔϴϟΎΘϟΓέϮμϟΎΑαΪϜϤϟΒμϳάϬΑϭ stack

A B C 3

A B C D 3

kholood alharthi

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 7: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˻˹

Then stackempty True 5- αΪϜϤϟ˯ϼΧΔϴϣίέϮΧClearStack

ϦϣϪϼΧϭαΪϜϤϟΔΌϴϬΗνήϐϟϡΪΨΘδΗΔϴϣίέϮΨϟϩάϫήηΆϤϟΔϤϴϗϞόΠΑήλΎϨόϟ)top=-1( Top -1

3-2-3 ŽŶƨưƫřšŚǀƬưƗŸǀƠƴŤƫŠǀƗźƠƫřŪƯřźŞƫř ΔѧѧϴϋήϓΞϣήѧѧΑϢϴϤѧѧμΗϥ)functions procedures (ΕΎѧѧϴϠϤϋϦѧѧϣΔѧѧϴϠϤϋϭΔѧѧϴϟΎόϓϞѧѧϜϟ

ϭΞϣΎѧϧήΑϲѧϓΎѧϬόϴϤΠΗϢΛϦϣϭΕΎϴϠϤόϟϚϠΗΔΠϣήΑΔϴϔϴϛϴοϮΗϭςϴδΒΗϰϠϋΪϋΎδΗαΪϜϤϟΪѧΣΚϳΪѧѧΤΘϟϭΔѧѧόΑΎΘϤϟϭϢѧѧϬϔϟϞϬѧѧγϭΓ˯ήѧѧϘϠϟΎΤѧѧοϭϥϮѧѧϜϳϭΔѧѧϠϜϴϬϤϟΔѧѧΠϣήΒϟΕΎϔѧѧλϪѧѧϴϓήϓϮѧѧΘΗ

ήϳϮτΘϟϭ ΔΤϴΤλΔϘΣϼϟΔϴϋήϔϟΞϣήΒϟϥϮϜΘϟΞϣΎϧήΒϟΔϣΪϘϣϲϓϲϟΎΘϟϒϳήόΘϟΩϮΟϭνήΘϔϧϭ

includeltiostreamhgt includeltstdlibhgt const size=20 int stack[size] int top int item

1- ŽŶƨưƫřŌLjųLJƾƗźƟŪƯŚƳźŝ void clearstack() top=-1

ϞѧόΠΑ˯ΎѧϔΘϛϻϭήϔѧμϠϟΔϳϭΎѧδϣΎϬϠόΟϭΔϓϮϔμϤϟϊϗϮϣϊϴϤΟϰϠϋέϭήϤϠϟΔΟΎΤϟϡΪϋφΣϻήηΆϤϟ

)top=-1 (ΔϳΪΑϲϓϰϋΪΘδϳϲϋήϔϟΞϣΎϧήΒϟάϫϭαΪϜϤϟΞϣήΑϊϣϞϣΎόΘϟ ϠόΠϟϪ ΎϴϟΎΧ 2- ŽŶƨưƫřŌLjŤƯœƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int fullstack() if(topgt=size-1) return(1) else return(0)

ΝήΨϤϟϥϮϜϳΔϟΪϟϩάϫΎϬϟήηΆϤϟΔϤϴϗΐΟϮϤΑ)top (ΎϣϮϫ1 )true (αΪϜϤϟϥϮϜϳΎϣΪϨϋϪΘϤϴϗϥϮϜΗϭ˯ϮϠϤϣ0 )false (˯ϮϠϤϣήϴϏαΪϜϤϟϥϮϜϳΎϣΪϨϋ ΞϣΎϧήΒϟϭ ϲϋήϔϟ

)fullstack(ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure push (ΔϓΎοϹΔϴϠϤϋάϔϨϴϟ 3- ŽŶƨưƫřƺƬųƲƯƢƤŰŤƬƫƾƗźƟŪƯŚƳźŝ

int emptystack()

˻˺

if(top==-1) return(1) else return(0)

ΝήѧѧΨϤϟϥϮѧѧϜϳΔѧѧϟΪϟϩάѧѧϫ ΎѧѧϬϟ ήѧѧηΆϤϟΔѧѧϤϴϗΐѧѧΟϮϤΑ)top (ΎѧѧϣϮϫ1 )true (ϥϮѧѧϜϳΎϣΪѧѧϨϋϭΎѧѧѧѧѧϴϟΎΧαΪѧѧѧѧѧϜϤϟ0 )false( ϲѧѧѧѧѧϋήϔϟΞϣΎѧѧѧѧѧϧήΒϟάѧѧѧѧѧϫϭϝΎѧѧѧѧѧΧήѧѧѧѧѧϴϏαΪѧѧѧѧѧϜϤϟϥϮѧѧѧѧѧϜϳΎϣΪѧѧѧѧѧϨϋ

)emptystack (ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure pop (ϑάΤϟΔϴϠϤϋάϔϨϳϱάϟ 4-ŽŶƨưƫřƼƫřŶůřƹźƈƴƗŠƟŚƋLJƾƗźƟŪƯŚƳźŝ

void push(int item) if(fullstack()) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0) else top=top+1 stack[top]=item

ΪѧѧΣϭήѧѧμϨϋϒϴѧѧπϳϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫ)item (ΞϣΎѧѧϧήΒϟϲѧѧϓϪΎϋΪΘѧѧγϦѧѧϜϤϳϭαΪѧѧϜϤϠϟϲδϴήϟ)main program (ϞΜϣέήϜΘϟΕίΎόϳΪΣϡΪΨΘγ΄ΑΕήϤϟϦϣΩΪϋϱ΄Α)forhellipDo

while (ήμϨόϟΓ˯ήϗϦϤπΘϳϱάϟ)item (ϲѧϋήϔϟΞϣΎѧϧήΒϟ˯ΎϋΪΘѧγϢѧΛ)push (ϰѧϟϪΘϓΎѧοϻαΪϜϤϟ

5- ŽŶƨưƫřƲƯŶůřƹźƈƴƗƝŸŰƫƾƗźƟŪƯŚƳźŝ void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0)

˻˻

else item=stack[top] top=top-1

ϪѧѧѧϴϟήϴѧѧѧθϳϱάѧѧѧϟήѧѧѧμϨόϟάѧѧѧΧ΄ϳϲѧѧѧϋήϔϟΞϣΎѧѧѧϧήΒϟάѧѧѧϫ)top (ήѧѧѧϴϐΘϤϟϲѧѧѧϓϪΨѧѧѧδϨϳϭ)item (ϖϴϘΤΘϟΔϨϴόϣΔΠϟΎόϤΑΎϘΣϻϪϣΪΨΘγϻαΪϜϤϟϦϣήμϨόϟάϫΐΤγϪϠΟϦϣϱάϟνήϐϟ

ϰϋΪΘѧδϳΞϣΎѧϧήΒϟάѧϫϥΎѧϓΔѧόΑΎΘΘϣΓέϮѧμΑαΪѧϜϤϟϦѧϣήѧμϨϋϦϣήΜϛΐΤγϭϑάΣνήϐϟϭϲδϴήϟΞϣΎѧϧήΒϟϦѧϣϊѧϗϮϣϱϲѧϓϭΕήѧϤϟϦѧϣΩΪѧϋϱΎΑέΎѧθϤϟέήѧϜΘϟώϴѧλϯΪѧΣϡΪΨΘѧγΎΑˬ

ΎϬϴϟ 3-2-4 ŶǀƤƫřƭřŶŴŤſŚŝŽŶƨưƫřƢǀŞƐţ

ϲѧѧѧϓήѧѧѧηΆϤϟϒѧѧѧϳήόΗΩέϭΔϓϮϔѧѧѧμϤϟϡΪΨΘѧѧѧγΎΑϖΑΎѧѧѧδϟϖѧѧѧϴΒτΘϟ)top (ϦѧѧѧϋϞϘΘѧѧѧδϣήѧѧѧϴϐΘϤϛαΪѧϜϤϟϞѧΜϤΗϲѧΘϟΔϓϮϔμϤϟˬΪѧϴϘϟϡΪΨΘѧδϧΎѧϨϫΎѧϨϧϻ)Record (ϲϧΎѧϴΑϞѧϜϴϬϛΎѧόϣΎѧϤϬϠϴΜϤΗϲѧϓ

ϮѧϫϲϧΎѧΜϟ˯ΰѧΠϟϭΔϓϮϔѧμϣϞϜѧηϰϠϋϮѧϫϭαΪѧϜϤϟϞѧΜϤϳϝϭϷϦϳΰΟϦϣΪϴϘϟϥϮϜΘϳΚϴΣΪΣϭΆϤϟϞΜϤϳϞϘΣήη)top (ϲΗϻΎϛϑήόϳϭ

int item const size=10 struct stack int top int element[size] st sttop=-1 stack

element Ϯϫ˯ΰΠϟάϫ top

ϢγΎΑϡΪΨΘδϳϭsttop ϢγΎΑϡΪΨΘδϳϭstelement[index] ΔϴϟΎΘϟΕϮτΨϟϊΒΘϧαΪϜϤϟάϬϟΪϳΪΟήμϨϋΔϓΎοϻ

1-ήηΆϤϟΔϤϴϗΙΪΤϧ)top (ΪϴϘϟϲϓϞϘΣϮϫϱάϟstack Βμϴϟ)(3 sttop=sttop+1

2-ΪϳΪΠϟήμϨόϟϒϴπϧ)D(ΪϳΪΠϟϊϗϮϤϟϲϓ)3 ( stelement[sttop]=D

ΔϴϟΎΘϟΓέϮμϟΎΑαΪϜϤϟΒμϳάϬΑϭ stack

A B C 3

A B C D 3

kholood alharthi

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 8: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˻˺

if(top==-1) return(1) else return(0)

ΝήѧѧΨϤϟϥϮѧѧϜϳΔѧѧϟΪϟϩάѧѧϫ ΎѧѧϬϟ ήѧѧηΆϤϟΔѧѧϤϴϗΐѧѧΟϮϤΑ)top (ΎѧѧϣϮϫ1 )true (ϥϮѧѧϜϳΎϣΪѧѧϨϋϭΎѧѧѧѧѧϴϟΎΧαΪѧѧѧѧѧϜϤϟ0 )false( ϲѧѧѧѧѧϋήϔϟΞϣΎѧѧѧѧѧϧήΒϟάѧѧѧѧѧϫϭϝΎѧѧѧѧѧΧήѧѧѧѧѧϴϏαΪѧѧѧѧѧϜϤϟϥϮѧѧѧѧѧϜϳΎϣΪѧѧѧѧѧϨϋ

)emptystack (ϲϋήϔϟΞϣΎϧήΒϟϞΧΩϰϋΪΘδϳ)procedure pop (ϑάΤϟΔϴϠϤϋάϔϨϳϱάϟ 4-ŽŶƨưƫřƼƫřŶůřƹźƈƴƗŠƟŚƋLJƾƗźƟŪƯŚƳźŝ

void push(int item) if(fullstack()) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0) else top=top+1 stack[top]=item

ΪѧѧΣϭήѧѧμϨϋϒϴѧѧπϳϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫ)item (ΞϣΎѧѧϧήΒϟϲѧѧϓϪΎϋΪΘѧѧγϦѧѧϜϤϳϭαΪѧѧϜϤϠϟϲδϴήϟ)main program (ϞΜϣέήϜΘϟΕίΎόϳΪΣϡΪΨΘγ΄ΑΕήϤϟϦϣΩΪϋϱ΄Α)forhellipDo

while (ήμϨόϟΓ˯ήϗϦϤπΘϳϱάϟ)item (ϲѧϋήϔϟΞϣΎѧϧήΒϟ˯ΎϋΪΘѧγϢѧΛ)push (ϰѧϟϪΘϓΎѧοϻαΪϜϤϟ

5- ŽŶƨưƫřƲƯŶůřƹźƈƴƗƝŸŰƫƾƗźƟŪƯŚƳźŝ void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0)

˻˻

else item=stack[top] top=top-1

ϪѧѧѧϴϟήϴѧѧѧθϳϱάѧѧѧϟήѧѧѧμϨόϟάѧѧѧΧ΄ϳϲѧѧѧϋήϔϟΞϣΎѧѧѧϧήΒϟάѧѧѧϫ)top (ήѧѧѧϴϐΘϤϟϲѧѧѧϓϪΨѧѧѧδϨϳϭ)item (ϖϴϘΤΘϟΔϨϴόϣΔΠϟΎόϤΑΎϘΣϻϪϣΪΨΘγϻαΪϜϤϟϦϣήμϨόϟάϫΐΤγϪϠΟϦϣϱάϟνήϐϟ

ϰϋΪΘѧδϳΞϣΎѧϧήΒϟάѧϫϥΎѧϓΔѧόΑΎΘΘϣΓέϮѧμΑαΪѧϜϤϟϦѧϣήѧμϨϋϦϣήΜϛΐΤγϭϑάΣνήϐϟϭϲδϴήϟΞϣΎѧϧήΒϟϦѧϣϊѧϗϮϣϱϲѧϓϭΕήѧϤϟϦѧϣΩΪѧϋϱΎΑέΎѧθϤϟέήѧϜΘϟώϴѧλϯΪѧΣϡΪΨΘѧγΎΑˬ

ΎϬϴϟ 3-2-4 ŶǀƤƫřƭřŶŴŤſŚŝŽŶƨưƫřƢǀŞƐţ

ϲѧѧѧϓήѧѧѧηΆϤϟϒѧѧѧϳήόΗΩέϭΔϓϮϔѧѧѧμϤϟϡΪΨΘѧѧѧγΎΑϖΑΎѧѧѧδϟϖѧѧѧϴΒτΘϟ)top (ϦѧѧѧϋϞϘΘѧѧѧδϣήѧѧѧϴϐΘϤϛαΪѧϜϤϟϞѧΜϤΗϲѧΘϟΔϓϮϔμϤϟˬΪѧϴϘϟϡΪΨΘѧδϧΎѧϨϫΎѧϨϧϻ)Record (ϲϧΎѧϴΑϞѧϜϴϬϛΎѧόϣΎѧϤϬϠϴΜϤΗϲѧϓ

ϮѧϫϲϧΎѧΜϟ˯ΰѧΠϟϭΔϓϮϔѧμϣϞϜѧηϰϠϋϮѧϫϭαΪѧϜϤϟϞѧΜϤϳϝϭϷϦϳΰΟϦϣΪϴϘϟϥϮϜΘϳΚϴΣΪΣϭΆϤϟϞΜϤϳϞϘΣήη)top (ϲΗϻΎϛϑήόϳϭ

int item const size=10 struct stack int top int element[size] st sttop=-1 stack

element Ϯϫ˯ΰΠϟάϫ top

ϢγΎΑϡΪΨΘδϳϭsttop ϢγΎΑϡΪΨΘδϳϭstelement[index] ΔϴϟΎΘϟΕϮτΨϟϊΒΘϧαΪϜϤϟάϬϟΪϳΪΟήμϨϋΔϓΎοϻ

1-ήηΆϤϟΔϤϴϗΙΪΤϧ)top (ΪϴϘϟϲϓϞϘΣϮϫϱάϟstack Βμϴϟ)(3 sttop=sttop+1

2-ΪϳΪΠϟήμϨόϟϒϴπϧ)D(ΪϳΪΠϟϊϗϮϤϟϲϓ)3 ( stelement[sttop]=D

ΔϴϟΎΘϟΓέϮμϟΎΑαΪϜϤϟΒμϳάϬΑϭ stack

A B C 3

A B C D 3

kholood alharthi

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 9: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˻˻

else item=stack[top] top=top-1

ϪѧѧѧϴϟήϴѧѧѧθϳϱάѧѧѧϟήѧѧѧμϨόϟάѧѧѧΧ΄ϳϲѧѧѧϋήϔϟΞϣΎѧѧѧϧήΒϟάѧѧѧϫ)top (ήѧѧѧϴϐΘϤϟϲѧѧѧϓϪΨѧѧѧδϨϳϭ)item (ϖϴϘΤΘϟΔϨϴόϣΔΠϟΎόϤΑΎϘΣϻϪϣΪΨΘγϻαΪϜϤϟϦϣήμϨόϟάϫΐΤγϪϠΟϦϣϱάϟνήϐϟ

ϰϋΪΘѧδϳΞϣΎѧϧήΒϟάѧϫϥΎѧϓΔѧόΑΎΘΘϣΓέϮѧμΑαΪѧϜϤϟϦѧϣήѧμϨϋϦϣήΜϛΐΤγϭϑάΣνήϐϟϭϲδϴήϟΞϣΎѧϧήΒϟϦѧϣϊѧϗϮϣϱϲѧϓϭΕήѧϤϟϦѧϣΩΪѧϋϱΎΑέΎѧθϤϟέήѧϜΘϟώϴѧλϯΪѧΣϡΪΨΘѧγΎΑˬ

ΎϬϴϟ 3-2-4 ŶǀƤƫřƭřŶŴŤſŚŝŽŶƨưƫřƢǀŞƐţ

ϲѧѧѧϓήѧѧѧηΆϤϟϒѧѧѧϳήόΗΩέϭΔϓϮϔѧѧѧμϤϟϡΪΨΘѧѧѧγΎΑϖΑΎѧѧѧδϟϖѧѧѧϴΒτΘϟ)top (ϦѧѧѧϋϞϘΘѧѧѧδϣήѧѧѧϴϐΘϤϛαΪѧϜϤϟϞѧΜϤΗϲѧΘϟΔϓϮϔμϤϟˬΪѧϴϘϟϡΪΨΘѧδϧΎѧϨϫΎѧϨϧϻ)Record (ϲϧΎѧϴΑϞѧϜϴϬϛΎѧόϣΎѧϤϬϠϴΜϤΗϲѧϓ

ϮѧϫϲϧΎѧΜϟ˯ΰѧΠϟϭΔϓϮϔѧμϣϞϜѧηϰϠϋϮѧϫϭαΪѧϜϤϟϞѧΜϤϳϝϭϷϦϳΰΟϦϣΪϴϘϟϥϮϜΘϳΚϴΣΪΣϭΆϤϟϞΜϤϳϞϘΣήη)top (ϲΗϻΎϛϑήόϳϭ

int item const size=10 struct stack int top int element[size] st sttop=-1 stack

element Ϯϫ˯ΰΠϟάϫ top

ϢγΎΑϡΪΨΘδϳϭsttop ϢγΎΑϡΪΨΘδϳϭstelement[index] ΔϴϟΎΘϟΕϮτΨϟϊΒΘϧαΪϜϤϟάϬϟΪϳΪΟήμϨϋΔϓΎοϻ

1-ήηΆϤϟΔϤϴϗΙΪΤϧ)top (ΪϴϘϟϲϓϞϘΣϮϫϱάϟstack Βμϴϟ)(3 sttop=sttop+1

2-ΪϳΪΠϟήμϨόϟϒϴπϧ)D(ΪϳΪΠϟϊϗϮϤϟϲϓ)3 ( stelement[sttop]=D

ΔϴϟΎΘϟΓέϮμϟΎΑαΪϜϤϟΒμϳάϬΑϭ stack

A B C 3

A B C D 3

kholood alharthi

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 10: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˻˼

st elements sttop

stelement[3] ƲƿźưţϲϋήϔϟΞϣΎϧήΒϟΔΑΎΘϛΪϋ)pop (ΪϴϘϟϡΪΨΘγΎΑαΪϜϤϟϦϣήμϨϋϑάΤϟ

void pop() if(emptystack()) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=stelement[sttop] sttop--

ƲƿźưţαΪѧϜϤϟϰѧϟΔΤϴΤѧμϟΩΪѧϋϷϦѧϣήѧλΎϨϋΔΛϼΛΔϓΎοϻΎϴϋήϓΎΠϣΎϧήΑΐΘϛ)set (ϱάѧϟϪΘόγ)20 ( ϞΤϟ ΔϓϮϔμϤϟΎΑϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)set (ΎϬΘόγϭ)20 (ΕΎϧΎϴΒϟωϮϧϭ)int(

int set[20] int top void push3() int i for(i=0ilt3i++) top++ if(top==20) coutltlterrorthe stack is fullltltendl coutltltpress any key to exitltltendl getch() exit(0)

kholood alharthi

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 11: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˻˽

else coutltltenter the elementltltendl cingtgtset[top]

ϲѧѧϋήϔϟΞϣΎѧѧϧήΒϟάѧѧϫϦϤѧѧπΗ)procedure (ϞѧѧΧΩαΪѧѧϜϤϟ˯ϼΘѧѧϣϦѧѧϣϖѧѧϘΤΘϟΓϮѧѧτΧίΎѧѧόϳΔϓϮϔμϤϟΔόγϥϊϣΔϓΎοΔϴϠϤϋϞϛΪϨϋάϔϨϴϟέήϜΘϟ)20 (ήѧλΎϨϋΩΪѧϋϑήѧόϧϻΎѧϨϧΐΒѧδϟϭ

ΔϓΎοϻϞΒϗαΪϜϤϟ

ϝΎΜϣαΪϜϤϟ)table (ΔόδΑ)30 (ήѧλΎϨϋΔѧόΑέϰѧϠϋϱϮѧΘΤϳήμϨϋDCBA ˬΎѧΠϣΎϧήΑΐѧΘϛΎϴϋήϓ)procedure( ΔϓΎοϻ)8(ϯήΧήλΎϨϋ ϞΤϟϤϳΏϮϠτϤϟαΪϜϤϟϥΔϓϮϔμϤϟΎΑϞΜ)table (ΎϬΘόγϭ)30 (ϮϫϪΗΎϧΎϴΑωϮϧϭ)char (

char table[30] int top void push8() int i top=3 for(i=0ilt8i++) top++ coutltltenter new elementn cingtgttable[top]

ΞϣΎϧήΒϟάϫϲϓ ϲϋήϔϟ)procedure (ήѧϴϏΎѧϬϧϮϜϟαΪѧϜϤϟ˯ϼΘϣϦϣϖϘΤΘϟΓϮτΧϊπϧϢϟϲϫαΪϜϤϟΔόγϥϻΔϳέϭήο)30 (ϲѧϫΔΑϮϠτϤϟΔϓΎοϻϭςϘϓήλΎϨϋΔόΑέϰϠϋϱϮΘΤϳϭ)8 (

˯ϼΘϣϷΔϟΎΣϰϟϞμϳϦϟαΪϜϤϟϥΎϓάϟςϘϓ ϝΎΜϣϑάΤϟϲϋήϓΞϣΎϧήΑΐΘϛ)4(αΪϜϤϟϦϣΔϴϘϴϘΣΩΪϋ)BOB(γϱάϟϪΘό)15(ήμϨϋ ϞΤϟΔϓϮϔμϤϟϞΜϤϳΏϮϠτϤϟαΪϜϤϟϥ)BOB (ΔόδΑ)15 (ΕΎϧΎϴΒϟωϮϧϭήμϨϋ)float (

float BOB[15] int top float item

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني
Page 12: ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في تراكيب البيانات والخوارزميات ú þ ¬ g § ç å Ê ô

˻˾

void pop4() int i for(i=0ilt4i++) if(top==-1) coutltlterrorhellipthe stack is emptyltltendl coutltltpress any key to exitltltendl getch() exit(0) else item=BOB[top] top--

3-2-5 ŽŶƨưƫřšŚƤǀŞƐţƮƷŏ 1- ΞϣήΑϰϠϋϱϮΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣΔϴϋήϓ

ΞϣήѧΑϰѧϠϋϱϮѧΘΤΗϲΘϟΞϣήΒϟΔΠϟΎόϣϲϓΕΎϤΟήΘϤϟϞΒϗϦϣΓήϴΒϛΔϴϤϫ΄ΑαΪϜϤϟϡΪΨΘδϳΔѧѧϴϋήϓ)functions amp procedures (ωϮѧѧΟήϟϦϳϭΎѧѧϨϋϥΰѧѧΨΑϚѧѧϟΫϭΎϬΎϋΪΘѧѧγΔѧѧϘϳήρϢϴѧѧψϨΗϭ

)Return Addresses (ΐѧѧϠτΘϳϚѧѧϟΫϥΎѧѧϓϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϞѧѧΧΩϲѧѧϋήϓΞϣΎѧѧϧήΑ˯ΎϋΪΘѧѧγΪѧѧϨόϓϥΰѧѧΧ ΞϣΎѧѧϧήΒϟάѧѧϴϔϨΗϲѧѧδϴήϟΞϣΎѧѧϧήΒϟϊϴτΘѧѧδϳϲѧѧϜϟ˯ΎϋΪΘѧѧγϻίΎѧѧόϳΪѧѧόΑϲϟΎѧѧΘϟίΎѧѧόϳϻϥϮѧѧϨϋ

ϊѧѧѧϗϮϤϟάѧѧѧϫϥϮѧѧѧϨϋϥϻϲϟΎѧѧѧΘϟίΎѧѧѧόϳϻϭΓϮѧѧѧτΨϟϊѧѧѧϗϮϣϰѧѧѧϟϴΤѧѧѧλϞϜѧѧѧθΑΓΩϮѧѧѧόϟϭϲѧѧѧϋήϔϟ)Return-address (αΪϜϤϟϲϓΎϧϭΰΨϣϥϮϜϳ

ϋ˯ΎϋΪΘγϦϤπΘϳϱάϟϲϟΎΘϟΞϣΎϧήΒϟϥνήΘϔϨϟϲϫΔϴϋήϔϟΞϣήΒϟϦϣΩΪCBA Begin this is the main program 100 CALL A 102 ---- ----- ---- ----- 200 CALL B ---- ----- 202 ---- ----- ---- 300 CALL C ----- ---- 302 ----- ---- ----

kholood alharthi
kholood alharthi
من محاضرات الأستاذ بلال العلواني