ª g g Ø Ë ® g g ¼ è Ë ð g g ß Ý î g g » î ß ª g g ¼ Ø ò ç ......مقدمة في...
TRANSCRIPT
˺˽
-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
˺˾
ΔϬΠϟβϔϧϡΪΨΘδϧϥΐΠϳαΪϜϤϟϦϣήμϨϋϑάΣΪϨϋϭ ςѧϘϓΔΣϮΘϔϤϟˬάѧΧ΄ϧϥϊϴτΘѧδϧϱ
ήμϨόϟ)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
˻˼
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)
˻˽
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 ----- ---- ----
˺˾
ΔϬΠϟβϔϧϡΪΨΘδϧϥΐΠϳαΪϜϤϟϦϣήμϨϋϑάΣΪϨϋϭ ςѧϘϓΔΣϮΘϔϤϟˬάѧΧ΄ϧϥϊϴτΘѧδϧϱ
ήμϨόϟ)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
˻˼
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)
˻˽
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 ----- ---- ----
˺˿
ήμϨόϟΝήΧϻ)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
˻˼
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)
˻˽
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 ----- ---- ----
˺
ήѧѧμϨόϟΝήѧѧΧϻϭ)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
˻˼
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)
˻˽
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 ----- ---- ----
˺
ΔѧѧΑϮϠτϤϟΔόѧѧδϟΎΑΔѧѧϳΩΎΣΔϓϮϔѧѧμϣϡΪΨΘѧѧγΎΑαΪѧѧϜϤϟϖѧѧϴΒτΗϦѧѧϜϤϳ)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
˻˼
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)
˻˽
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 ----- ---- ----
˺
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
˻˼
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)
˻˽
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 ----- ---- ----
˻˹
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
˻˼
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)
˻˽
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 ----- ---- ----
˻˺
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
˻˼
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)
˻˽
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 ----- ---- ----
˻˻
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
˻˼
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)
˻˽
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 ----- ---- ----
˻˼
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)
˻˽
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 ----- ---- ----
˻˽
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 ----- ---- ----
˻˾
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 ----- ---- ----