You are on page 1of 6

‫‪Machine Translated by Google‬‬

‫ج‬

‫ﺋﻴ ﺲ‬
‫ر‬ ‫اﻟﻌﻘﺪة اﻷوﱃ‬ ‫اﻟﻌﻘﺪة اﻷﺧﻴﺮة‬

‫‪6‬‬ ‫‪22‬‬ ‫‪4‬‬ ‫ﺑﺎﻃﻞ‬

‫إزاﻟ ﺔ‬ ‫ﻣﺪرج‬

‫إﻋﺎدةﺗﻨﻈﻴﻢ‬ ‫ﺘﺨﺼﻴﺺ‬
‫إﻋﺎدة اﻟ‬

‫ﺻﻔﺤ ﺔ ‪1‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻠ ﺔ‪( .‬‬


‫ﺘﻠ ﺔ ﻓ ﻲ اﻟﺤﻴﺰ( ﻛ‬
‫ﺑﺤﺠﻢ ﻣﺤﺪد ‪ ،‬وﺣﺠﻢ اﻟﻤﺆﺷﺮ ﻋﲆ اﻟﻤﺆﺷﺮﻳﺆﺷﺮ ‪ ،‬ﻛ‬‫ﺘﻠ ﺔ(‬
‫ﻛ‬

‫ﺘ ﻲﺗﻜﻮن ﻓﻴﻬﺎ اﻟﻌﻘﺪة اﻟﺤﻠﻘ ﺔ اﻷﺧﻴﺮةﺗﺸﻴﺮ إﱃ ال ﺷ ﺊ ﻓﺎرﻏ ﺔ أي‪null ( (.‬‬


‫ﺒﻄ ﺔ ﻫ ﻲ اﻟﻘﺎﺋﻤ ﺔ اﻟ‬
‫ﺗ‬‫اﻟﻘﺎﺋﻤ ﺔ اﻟﻈﺎ ﻫﺮة اﻟﺨﻄﻴ ﺔ اﻟﻘﺎﺋﻤ ﺔ اﻟﻤﺮ‬
‫= ‪next node‬‬

‫ﺋﻴ ﺲ‬
‫ر‬ ‫اﻟﻌﻘﺪة اﻷوﱃ‬ ‫اﻟﻌﻘﺪة اﻷﺧﻴﺮة‬

‫‪100‬‬ ‫‪300‬‬ ‫‪350‬‬ ‫‪250‬‬ ‫ﺑﺎﻃﻞ‬

‫ﺘ ﻲﺗﺸﻴﺮ إﱃ اﻟﻌﻘﺪة اﻷوﱃ‪.‬‬


‫ﺘ ﻲﺗﻜﻮن ﻓﻴﻬﺎ اﻟﻌﻘﺪة اﻷوﱃ اﻟ‬
‫ﺘﻌﻤﻴﻢ ﻫ ﻲ اﻟﻘﺎﺋﻤ ﺔ اﻟ‬
‫ﺑﺎﻟ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫اﻟﻘﺎﺋﻤ ﺔ واﻟﺪاﺋﺮﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ اﻟﻤﺮ‬

‫اﻟﻌﻘﺪة اﻷوﱃ‬ ‫اﻟﻌﻘﺪة اﻷﺧﻴﺮة‬

‫‪100‬‬ ‫‪300‬‬ ‫‪350‬‬ ‫‪250‬‬

‫اﻟﺼﻔﺤ ﺔ ‪2‬‬
‫‪Machine Translated by Google‬‬

‫ﺘ ﻲﺗﻨﺠﺰ ﻋﲆ اﻟﻘﺎﺋﻤ ﺔ اﻟﻤﻮﺟﻮدة ﻫ ﻲ‪:‬‬


‫اﻟﻌﻤﻠﻴﺎ ت اﻟ ﺴﻄﺤﻴ ﺔ اﻟ‬

‫‪.addition‬إﺿﺎﻓ ﺔ‪1 - .‬‬


‫اﻟﺤﺬف إﻟﻐﺎء‪2 - .‬‬
‫ﺑﺤ ﺖ‪3 .‬‬‫ﺒﺤ ﺚ‬
‫اﻟ‬

‫‪.‬اﻟﻘﺎﺋﻤ ﺔ اﻟﻤﻨﻔﺮدة اﻟﻈﺎ ﻫﺮة اﻟﻘﺎﺋﻤ ﺔ‪1 .‬‬

‫‪.‬ﻗﺎﺋﻤ ﺔ ﻣﺰدوﺟ ﺔ ‪ ،‬واﻟﻈﺎ ﻫﺮة اﻟﻘﺎﺋﻤ ﺔ‪2 .‬‬

‫اﻟﺼﻔﺤ ﺔ ‪3‬‬
‫‪Machine Translated by Google‬‬

‫ﺛﻨﻴﻦ‪:‬‬
‫ﻛﻞﺳﺠﻞ أو ﻋﻘﺪة ﻋﻘﺪة ﺣﻘﻠﻴﻦ ﻓ ﻲ ﺣﻘﻠﻴﻦ ا‬

‫‪...‬‬ ‫‪...‬‬
‫ﺘﺎﻟﻴ ﺔ‬
‫اﻟﻌﻘﺪة اﻟ‬

‫ﺑﻴﺎﻧﺎ ت‬ ‫ﺣﻠﻘ ﺔ اﻟﻮﺻﻞ‬

‫ﺋﻴ ﺲ‬
‫ر‬

‫‪13‬‬ ‫‪2‬‬ ‫‪11‬‬ ‫‪9‬‬ ‫ﺑﺎﻃﻞ‬

‫ﺘﺎﻟ ﻲ‬
‫ﺣﻘﻞ اﻟﻤﺆﺷﺮ اﻟ‬

‫ﻣﻌﻠﻮﻣﺎ ت ﻣﻌﻠﻮﻣﺎ ت اﻟﺤﻘﻞ‬

‫ﺘﺎﻟ ﻲ‪ :‬إذا ً ﻧﻔﺮض أﻧﻨﺎ ﻧﺮﻳﺪ ﻗﺎﺋﻤ ﺔﺗﺨﺰﻳﻦ اﻟﺼﻮرة اﻟﺼﺤﻴﺤ ﺔ‬


‫اﻟﻘﺎﺋﻤ ﺔ اﻟﻈﺎ ﻫﺮةﻳﻤﻜﻦ أنﺗﻜﻮن ﻣﻌﻠﻨ ﺔ ﻛﺎﻟ‬

‫ﻧﻮع اﻟﻌﻘﺪة اﻟﻬﻴﻜﻞ ‪typedef‬‬

‫{‬

‫ﺒﺎﺣ ﺚ‬
‫ﻣﻌﻠﻮﻣﺎ ت اﻟ‬

‫ﺘﺎﻟ ﻲ ؛‬
‫ﻧﻮع اﻟﻌﻘﺪة اﻟﻬﻴﻜﻞ *اﻟ‬

‫}ﻋﻘﺪة‬

‫ﻋﻘﺪة *رأس‬

‫ﺻﻔﺤ ﺔ ‪4‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻐﻴﺮ‬
‫ﺘﻐﻴﺮ اﻟﺮأس اﻟﺮأس ﻣﻌﻠﻦ ﻛﻤﺆﺷﺮ ﻟﻠﻌﻘﺪة ‪node.‬اﻟﻤ‬
‫ﺑﻖ ‪ ،‬اﻟﻤ‬
‫‪-‬ﻓ ﻲ ﻣﺠﺪدن اﻟ ﺴﺎ‬
‫‪-‬‬
‫ﺘﺨﺪم ﻟﻴﺆﺷﺮ‬
‫ﺘﻐﻴﺮ اﻟﺮأس اﻟﺮأسﻳ ﺴ‬
‫ﺘﺪاول‪ .‬اﻟﻤ‬
‫ﺘﻰ ذروة اﻟ‬
‫ﺘﻰ ذروة اﻟﺮأس ﺣ‬
‫اﻟﺮأس ﺣ‬
‫‪-‬‬
‫ﻋﲆ اﻟﻘﺎﺋﻤ ﺔ اﻟﻤﻨﻌﻘﺪة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬

‫ﺘﻐﻴﺮ اﻟﺮأسﻳﺆﺷﺮ ﻟﻘﺎﺋﻤ ﺔ ﻓﺎﺿﻴﻪ‪.‬‬


‫ﺒﺪاﻳ ﺔ ‪ ،‬اﻟﻤ‬
‫ﺘﻜﻮن ﻓﺎﺿﻴﻪ ﻓﺎرﻏ ﺔ ﻓ ﻲ اﻟ‬
‫‪-‬ﻟﻜﻮن اﻟﻘﺎﺋﻤ ﺔﺳ‬

‫ﺑﺎﻃﻠ ﺔ )ﻋﻘﺪة *رأس(‬‫ﻗﺎﺋﻤ ﺔ إﻧﺸﺎء‬

‫{‬

‫ﺋﻴ ﺲ ؛ ‪= NULL‬‬
‫ر‬

‫}‬

‫إﻟﺪﺧﺎل ﻋﻨﺼﺮ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬

‫أوالًﻋﻘﺪة ﺟﺪﻳﺪة ‪node new ،‬‬


‫ﺗﻜﻮﻳﻦ‬
‫ﺘﻢ‬
‫ﻳ‬ ‫‪-‬‬
‫ﺗﺤﺪﻳﺪ ﻣﻮﻗﻒﺗﺤﺪﻳﺪ ﻣﻜﺎﻧﻪ ﻓ ﻲ ﺣﻘﻞ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺠﺎل ﻟﻠﻌﻘﺪة اﻟﺠﺪﻳﺪة ﻟﻠﻌﻘﺪة اﻟﺠﺪﻳﺪة ‪،‬‬
‫‪-‬‬

‫ﺘﻌﺪﻳﻞ اﻟﻤﺆﺷﺮا ت‪.‬‬


‫ﺑ‬‫ﺑﻌﺪ ذﻟﻚﻳﻀﻌﺎنﺗﻀﻊ اﻟﻌﻘﺪة اﻟﺠﺪﻳﺪة ﻓ ﻲ اﻟﻤﻮﻗﻊ ﻣﻮﻗﻊ اﻟﻤﺎﻟﺌﻢ‬
‫‪-‬‬

‫ﺘﺎﻟﻴ ﺔ‪ :‬أن اﻟﻘﺎﺋﻤ ﺔ ﻓ ﻲﺗﻮﺻﻴﻞﻳﺤﺪ ثﻳﻤﻜﻦ‬


‫اﻟﻤﻮاﻗﻊ اﻟ‬

‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﻣﺪﻓﻮع ت اﻟ‬
‫ﻋﻨﺼﺮ اﻟﺨﻄﻮا‬
‫ﺘﻢ ذﻟﻚ‬
‫ﻫﻨﺎك‬
‫ﺋﻤ ﺔ‪ .‬وﻳ‬
‫ﻛﺎن‬
‫ال‪.‬اﻟﻘﺎ‬
‫ﻣﺪﻓﻮﻋًﺔ ﺎأمﻓ ﻲ‬
‫ﻓﺎﺿﻴاﺔ ﻓﺎرﻏ‬
‫ﺗﻈﻬﺮﻋﻨﺼ ﺮً‬
‫ﺜﻞ‬‫ﻳﻤ‬
‫ﻣﺎﺔ‬
‫اﻟﻘﺎﺋﻤ‬
‫ﺖو ﻫﻮ‬
‫اﻟﻤﻨﺠﺰة ‪،‬‬
‫ﺒﺮ إذا ﻛﺎﻧ‬
‫ﺘﺔ‬
‫ﺋﻤ‬
‫اﻟﻘﺎﻧﺨ‬
‫أوالً ‪،‬‬
‫ﻓﻲ‬

‫‪-‬‬
‫ﺘﻢ‬
‫ﺘﺎﻟ ﻲ ﻋﻘﺪة ﺟﺪﻳﺪة ﻟﻠﻌﻘﺪة اﻟﺠﺪﻳﺪة‪.‬ﻳ‬
‫ﺘﻢﺗﺨﺼﻴﺺ اﻟـ ‪null‬ﻟﺤﻘﻞ اﻟﻤﺆﺷﺮ اﻟ‬
‫ﻳ‬

‫‪-‬‬
‫ﺗﺨﺼﻴﺺ اﻟﻌﻨﻮان ﻟﻠﻌﻘﺪة اﻟﺠﺪﻳﺪة ‪node new‬ﻟﻠﺮأس ‪head.‬‬

‫ﺋﻴ ﺲ‬
‫ر‬ ‫ﻋﻘﺪة ﺟﺪﻳﺪة‬

‫‪10‬‬ ‫ﺑﺎﻃﻞ‬

‫اﻟﻌﻘﺪة اﻷوﱃ‬

‫اﻟﺼﻔﺤ ﺔ ‪5‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺘﻢ إﻧﺠﺎز ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﻟﺨﻄﻮا ت اﻟ‬
‫ﺘﻢ وﺿﻊ اﺳﻢ اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ اﻟﻘﺎﺋﻤ ﺔ اﻟﻤﻨ ﺴﺪﻟ ﺔ‪ .‬وﻳ‬
‫إذا ﻟﻢﺗﻜﻦ ﻓﺎﺿﻴ ﺔ ﻓﺎرﻏ ﺔ ‪،‬ﻳ‬

‫‪-‬‬
‫ﺘﻢﺗﺨﺼﻴﺺ ﻗﻴﻤ ﺔ اﻟﺮأس اﻟﺮأس ﻟﺤﻘﻞ اﻟﻤﺆﺷﺮ ‪next‬ﻟﻠﻌﻘﺪة اﻟﺠﺪﻳﺪة ‪node new.‬‬
‫ﻳ‬
‫ﻳ‪-‬‬
‫ﺘﻢﺗﺨﺼﻴﺺ اﻟﻌﻨﻮان ﻟﻠﻌﻘﺪة اﻟﺠﺪﻳﺪة ‪node new‬ﻟﻠﺮأس ‪head.‬‬

‫ﺋﻴ ﺲ‬
‫ر‬

‫‪13‬‬ ‫‪2‬‬ ‫‪11‬‬ ‫‪9‬‬ ‫ﺑﺎﻃﻞ‬

‫ﺋﻴ ﺲ‬
‫ر‬

‫‪13‬‬ ‫‪2‬‬ ‫‪11‬‬ ‫‪9‬‬ ‫ﺑﺎﻃﻞ‬

‫‪20‬‬

‫ﻋﻘﺪة ﺟﺪﻳﺪة‬

‫ﺘﺎﻟ ﻲ ﻟﻠﻌﻘﺪة اﻟﺠﺪﻳﺪة‪.‬‬


‫ﺘﻴﻦ‪ .‬وذﻟﻚﻷن اﻟﻤﺆﺷﺮ اﻟ‬
‫ﺘﻜﺎﻓﺌ‬
‫ﺘﻴﻦ ﻣ‬
‫اﻟﺮأس ‪(null‬أو ﻏﻴﺮ ‪ً ،‬ﻛﺎل اﻟﺤﺎﻟ‬

‫ﺒﺪاﻳ ﺔ )ﻋﻘﺪة *رأس ‪ ،‬ﻋﻨﺼﺮ )‪int‬‬


‫ﺑﺎﻃﻞ ﻓ ﻲ اﻟ‬‫إدﺧﺎل‬

‫{‬

‫ﻋﻘﺪة *ﻋﻘﺪة ﺟﺪﻳﺪة ؛‬

‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻮﺟﻮدة ﻓﻴﻬﺎ ‪* /‬‬


‫ﺗﻬﻴﺌ ﺔ اﻟ‬
‫ﺗﺨﺼﻴﺺ ذاﻛﺮة ﻟﻠﻌﻘﺪة اﻟﺠﺪﻳﺪة و‬
‫*‪/‬‬

‫‪)newNode = malloc (sizeof‬ﻋﻘﺪة(( ؛‬

‫>‪newNode-‬ﻣﻌﻠﻮﻣﺎ ت =ﻋﻨﺼﺮ ؛‬

‫ﺘﺎﻟ ﻲ" ﻓ ﻲ ‪newNode * /‬‬


‫ﺘﻌﻴﻴﻦ ﻗﻴﻤ ﺔ اﻟﺮأس إﱃ "اﻟ‬
‫ﺑ‬‫* ‪/‬ﻗﻢ‬

‫ﺘﺎﻟ ﻲ =اﻟﺮأس ؛‬
‫>‪newNode-‬اﻟ‬

‫ﺗﻌﻴﻴﻦ ﻋﻨﻮان ‪newNode‬ﻟﻠﺮأس ‪* /‬‬


‫*‪/‬‬

‫اﻟﺮأس ؛ ‪= newNode‬‬

‫}‬

‫اﻟﺼﻔﺤ ﺔ ‪6‬‬

You might also like