ﺑﻪ ﻧﺎم ﺧﺪاوﻧﺪ زﻳﺒﺎﻳﻲﻫﺎ ﺳﺎﺧﺘﻤﺎن دادهﻫﺎ و اﻟﮕﻮرﻳﺘﻢﻫﺎ داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ Data Structures and Algorithms داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺗﻤﺮﻳﻦ ﺳﺮي 3 (1داده ﺳﺎﺧﺘﺎري ﻃﺮاﺣﻲ ﻛﻨﻴﺪ ﻛﻪ اﻋﻤﺎل ) FindMin ،Pop ،Pushﻳﺎﻓﺘﻦ و ﺑﺮﮔﺮداﻧﺪن ﻛﻮﭼﻜﺘﺮﻳﻦ ﻋﻨﺼﺮﺑﻴﻦ ﻋﻨﺎﺻﺮ ﻣﻮﺟﻮد( و FindMaxرا ﺑﺘﻮاﻧﺪ در 1اﻧﺠﺎم دﻫﺪ .اﻋﻤﺎل را ﺑﻪ زﺑﺎن CLRSﺑﻨﻮﻳﺴﻴﺪ. اﺧﺘﻴﺎري :اﺛﺒﺎت ﻛﻨﻴﺪ اﮔﺮ ﻋﻤﻞ Deleteminﻫﻢ اﺿﺎﻓﻪ ﺷﻮد ،دﺳﺖ ﻛﻢ ﻳﻜﻲ از اﻳﻦ اﻋﻤﺎل ﺑﺎﻳﺪ در Ω lg nاﻧﺠﺎم ﺷﻮد. (2ﻧﺸﺎن دﻫﻴﺪ ﻛﻪ ﭼﮕﻮﻧﻪ ﻣﻲﺗﻮان ﻳﻚ ﭘﺸﺘﻪ را ﺑﺎ اﺳﺘﻔﺎده از دو ﺻﻒ ﭘﻴﺎدهﺳﺎزي ﻛﺮد و زﻣﺎن ﻋﻤﻠﻴﺎت ﻣﺮﺑﻮط ﺑﻪ ﭘﺸﺘﻪ را ﺑﻪ دﺳﺖ آورﻳﺪ. (3ﺗﻮﺿﻴﺢ دﻫﻴﺪ ﭼﮕﻮﻧﻪ ﻣﻲﺗﻮان ﻳﻚ ﻟﻴﺴﺖ دوﭘﻴﻮﻧﺪي را ﺑﺎ اﺳﺘﻔﺎده از ﺗﻨﻬﺎ ﻳﻚ ﻓﻴﻠﺪ اﺷﺎرهﮔﺮ ﺳﺎﺧﺖ) .ﻳﻌﻨﻲ ﺑﻪ ﺟﺎي دو ﻓﻴﻠﺪ nextو ،prevﻳﻚ ﻓﻴﻠﺪ npxداﺷﺘﻪ ﺑﺎﺷﻴﻢ( ﻓﺮض ﻛﻨﻴﺪ ﻣﻘﺎدﻳﺮ اﺷﺎرهﮔﺮﻫﺎ ﺑﻪ ﺻﻮرت اﻋﺪاد kﺑﻴﺘﻲ ﻧﻤﺎﻳﺶ داده ﺷﻮﻧﺪ و npxرا ﺑﻪ اﻳﻦ ﺻﻮرت ﺗﻌﺮﻳﻒ ﻛﺮده ﺑﺎﺷﻴﻢ) npx nextx XOR prevx :ﻣﻘﺪار Nilﺑﺼﻮرت 0ﻧﺸﺎن داده ﻣﻲ- ﺷﻮد( ﺗﻮﺿﻴﺢ دﻫﻴﺪ داﺷﺘﻦ ﭼﻪ اﻃﻼﻋﺎﺗﻲ ﺑﺮاي دﺳﺘﺮﺳﻲ ﺑﻪ ﺳﺮﻟﻴﺴﺖ ) (headﻻزم اﺳﺖ و ﻧﺸﺎن دﻫﻴﺪ ﻋﻤﻠﻴﺎت Insert ،Search و Deleteرا ﭼﮕﻮﻧﻪ ﺑﺎﻳﺪ در ﭼﻨﻴﻦ ﻟﻴﺴﺘﻲ ﭘﻴﺎدهﺳﺎزي ﻛﺮد. (4ﻋﻤﻞ UNIONروي ﻣﺠﻤﻮﻋﻪﻫﺎ ﺑﻪ اﻳﻦ ﺻﻮرت اﺳﺖ ﻛﻪ دو ﻣﺠﻤﻮﻋﻪي ﺟﺪا از ﻫﻢ S1و S2را ﺑﻪ ﻋﻨﻮان ورودي ﻣﻲﮔﻴﺮد و ﻣﺠﻤﻮﻋﻪي S S1∪ S2را ﺑﺮﻣﻲﮔﺮداﻧﺪ .ﺑﻌﺪ از اﻧﺠﺎم اﻳﻦ ﻋﻤﻞ ﻣﺠﻤﻮﻋﻪﻫﺎي S1و S2از ﺑﻴﻦ ﻣﻲروﻧﺪ .ﻧﺸﺎن دﻫﻴﺪ ﻋﻤﻞ UNION ﺑﺎ اﺳﺘﻔﺎده از داده ﺳﺎﺧﺘﺎر ﻟﻴﺴﺖ در زﻣﺎن O1اﻧﺠﺎم ﻣﻲﺷﻮد. (5ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪي ﻳﻜﻲ از روشﻫﺎي ﭘﻴﺎدهﺳﺎزي اﻋﺪاد ﺑﺎ ﺗﻌﺪاد ارﻗﺎم زﻳﺎد و ﻧﺎﻣﺸﺨﺺ اﺳﺖ .ﻣﺜﻼً اﻋﺪاد *1097و -209را ﻣﻲ- ﺗﻮان ﺑﻪ ﺻﻮرت دو ﻟﻴﺴﺖ زﻳﺮ ﭘﻴﺎدهﺳﺎزي ﻛﺮد .ﻣﻮﻟﻔﻪﻫﺎي ﻫﺮ ﻋﻨﺼﺮ ﻟﻴﺴﺖ) char ،ﻛﻪ ﻳﺎ +و ﻳﺎ – و ﻳﺎ ﻳﻜﻲ از ارﻗﺎم 0ﺗﺎ 9اﺳﺖ( و prevﻛﻪ ﺑﻪ رﻗﻢ ﻗﺒﻠﻲ اﺷﺎره ﻣﻲﻛﻨﺪ ،ﻫﺴﺘﻨﺪ .ﻟﻴﺴﺖﻫﺎ ﺳﺮﻟﻴﺴﺖ دارﻧﺪ و ﻋﻼﻣﺖ ﻋﺪد را در ﺧﻮد ذﺧﻴﺮه ﻣﻲﻛﻨﻨﺪ. 1 روﻳﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﺗﺎ دو ﻋﺪد )ﻣﺜﺒﺖ ﻳﺎ ﻣﻨﻔﻲ( را ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻛﻨﺪ و ﻳﻚ ﻟﻴﺴﺖ ﺟﺪﻳﺪ ﺑﺮاي ﻋﺪد ﻣﺠﻤﻮع ﺑﺴﺎزد. (6ﻳﻚ روﻳﻪي ﻏﻴﺮ ﺑﺎزﮔﺸﺘﻲ ﺑﺎ زﻣﺎن اﺟﺮاي Onﺑﻨﻮﻳﺴﻴﺪ ﺑﻄﻮرﻳﻜﻪ ﻳﻚ ﻟﻴﺴﺖ ﭘﻴﻮﻧﺪي را ﻛﻪ ﺷﺎﻣﻞ nﻋﻨﺼﺮ اﺳﺖ ،واروﻧﻪ ﻛﻨﺪ. اﻳﻦ روﻳﻪ ﻣﺠﺎز اﺳﺖ ﻋﻼوه ﺑﺮ ﻓﻀﺎي ﺧﻮد ﻟﻴﺴﺖ ﻓﻘﻂ از ﻣﻘﺪار ﺛﺎﺑﺘﻲ ) (constantﺣﺎﻓﻈﻪ اﺳﺘﻔﺎده ﻛﻨﺪ. (7ﻣﻌﻤﻮﻻً ﻣﺎ ﺑﻪ دﻧﺒﺎل اﻳﻦ ﻫﺴﺘﻴﻢ ﻛﻪ ﺗﻤﺎﻣﻲ ﻋﻨﺎﺻﺮ ﻳﻚ ﻟﻴﺴﺖ دوﭘﻴﻮﻧﺪي را ﺑﺼﻮرت ﻓﺸﺮده ذﺧﻴﺮه ﻛﻨﻴﻢ .ﺑﺮاي ﻣﺜﺎل ،از mﻣﻜﺎن اول ﺑﺮاي ﻧﻤﺎﻳﺶ آراﻳﻪي ﭼﻨﺪﮔﺎﻧﻪ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ .ﺗﻮﺿﻴﺢ دﻫﻴﺪ ﭼﮕﻮﻧﻪ ﻣﻲﺗﻮان روﻳﻪﻫﺎي ALLOCATE - OBJECTو FREE - OBJECTرا ﭘﻴﺎدهﺳﺎزي ﻛﺮد ﺑﻄﻮرﻳﻜﻪ ﻧﻤﺎﻳﺶ ﻓﺸﺮده ﺑﺎﺷﺪ .ﻓﺮض ﻛﻨﻴﺪ ﻫﻴﭻ اﺷﺎرهﮔﺮﺧﺎرﺟﻲ ﺑﻪ ﻋﻨﺎﺻﺮ ﻟﻴﺴﺖ وﺟﻮد ﻧﺪارد) .راﻫﻨﻤﺎﻳﻲ :از ﻧﻤﺎﻳﺶ آراﻳﻪاي ﭘﺸﺘﻪ ،اﺳﺘﻔﺎده ﻛﻨﻴﺪ(. (8اﻟﮕﻮرﻳﺘﻤﻲ اراﺋﻪ دﻫﻴﺪ ﺑﺎ زﻣﺎن اﺟﺮاي ،On6ﻛﻪ ﺑﻠﻨﺪﺗﺮﻳﻦ زﻳﺮدﻧﺒﺎﻟﻪي اﻛﻴﺪاً ﺻﻌﻮدي از ﻳﻚ دﻧﺒﺎﻟﻪي nﺗﺎﻳﻲ اﻋﺪاد را ﺑﻴﺎﺑﺪ. 2
© Copyright 2025 Paperzz