P1.pdf

‫ﭘﺮ ﻭﮊٔﻩ ‪ ۱‬ﺳﺎﺧﺘﻤﺎﻥ ﺩﺍﺩﻩ‬
‫‪۲‬‬
‫ﻟﯿﺴﺖ ﭘﯿﻮﻧﺪﯼ ﺩﻭﻃﺮﻓﻪ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻮﻋﺪ ﺗﺤﻮﯾﻞ‪ ۸۵/۸/۲۰ :‬ﺗﺎ ‪ ۸:۰۰‬ﺏ‪.‬ﻅ‪.‬‬
‫‪۱‬‬
‫ﻟﯿﺴﺖ ﭘﯿﻮﻧﺪﯼ ﺩﻭﻃﺮﻓﻪ‪ ،‬ﯾﮏ ﻧﻮﻉ ﻟﯿﺴﺖ ﭘﯿﻮﻧﺪﯼ ﺍﺳﺖ ﮐﻪ ﻫﺮ ﮔﺮٔﻩ ﺁﻥ‪ ،‬ﯾﮏ ﺍﺷﺎﺭﻩﮔﺮ ﺑﻪ ﮔﺮٔﻩ ﻗﺒﻠﯽ ﻭ ﯾﮏ ﺍﺷﺎﺭﻩﮔﺮ ﺑﻪ‬
‫ﮔﺮٔﻩ ﺑﻌﺪﯼِ ﺧﻮﺩ ﺩﺍﺭﺩ‪ .‬ﺑﻨﺎﺑﺮﺍﯾﻦ ﭘﯿﻤﺎﯾﺶ ﺍﯾﻦ ﻟﯿﺴﺖ ﭘﯿﻮﻧﺪﯼ ﺩﺭ ﻫﺮ ﺩﻭ ﺟﻬﺖ ﺍﻣﮑﺎﻥﭘﺬﯾﺮ ﺍﺳﺖ‪ .‬ﺩﺭ ﺍﯾﻦ ﭘﺮ ﻭﮊﻩ ﺷﻤﺎ ﺑﺎﯾﺪ‬
‫ﯾ‰ﮏ ﻟ‰ﯿ‰ﺴ‰ﺖ ﭘ‰ﯿ‰ﻮﻧ‰ﺪﯼ ﺩﻭﻃ‰ﺮﻓ‰ﻪ ﺑ‰ﺎ ﻗ‰ﺎﺑ‰ﻠ‰ﯿ‰ﺘ‰ﻬ‰ﺎﯼ ﺯ ﯾ‰ﺮ ﭘ‰ﯿ‰ﺎﺩﻩﺳ‰ﺎﺯﯼ ﮐ‰ﻨ‰ﯿ‰ﺪ ﮐ‰ﻪ ﮔ‰ﺮﻩﻫ‰ﺎﯼ ﺁﻥ ﺍﻋ‰ﺪﺍﺩ ﺻ‰ﺤ‰ﯿ‰ﺢ )‪ (Integer‬ﺩﺭ ﺧ‰ﻮﺩ‬
‫ﺫﺧﯿﺮﻩ ﻣﯽﮐﻨﻨﺪ‪.‬‬
‫‪ :"push front i" .۱‬ﺩﺭﺝ ﮔﺮﻩﺍﯼ ﺟﺪﯾﺪ ﻣﺤﺘﻮﯼ ‪ ،i‬ﺩﺭ ﺍﺑﺘﺪﺍﯼ ﻟﯿﺴﺖ‪.‬‬
‫‪ :"push back i" .۲‬ﺩﺭﺝ ﮔﺮﻩﺍﯼ ﺟﺪﯾﺪ ﻣﺤﺘﻮﯼ ‪ ،i‬ﺩﺭ ﺍﻧﺘﻬﺎﯼ ﻟﯿﺴﺖ‪.‬‬
‫‪ (۰ ≤ α, β ≤ n − ۱) :"swap α β" .۳‬ﺟﺎﺑﺠﺎ ﮐﺮﺩﻥ ﻋﻨﺼﺮ ‪ α‬ﻭ ‪β‬ﺍﻡ ﻟﯿﺴﺖ‪.‬‬
‫‪ :"delete i" .۴‬ﭘﯿﻤﺎﯾﺶ ﻟﯿﺴﺖ ﻭ ﺣﺬﻑ ﺗﻤﺎﻣﯽ ﮔﺮﻩﻫﺎﯾﯽ ﮐﻪ ﺣﺎﻭﯼ ﻋﺪﺩ ‪ i‬ﻫﺴﺘﻨﺪ‪ .‬ﺩﺭ ﻧﺘﯿﺠ ٔﻪ ﺍﯾﻦ ﻋﻤﻞ ﺗﻌﺪﺍﺩ‬
‫ﮔﺮﻩﻫﺎﯼ ﺣﺬﻑﺷﺪﻩ ﺩﺭ ﯾﮏ ﺧﻂ ﺍﺯ ﻓﺎﯾﻞ ﺧﺮ ﻭﺟﯽ ﻧﻮﺷﺘﻪ ﻣﯽﺷﻮﺩ‪.‬‬
‫‪ :"find min" .۵‬ﭘﯿﻤﺎﯾﺶ ﻟﯿﺴﺖ ﻭ ﭼﺎﭖ ﮐﻮﭼﮑﺘﺮ ﯾﻦ ﻋﺪِﺩ ﻟﯿﺴﺖ‪ ،‬ﺩﺭ ﯾﮏ ﺳﻄﺮ ﻓﺎﯾﻞ ﺧﺮ ﻭﺟﯽ‪ .‬ﺩﺭ ﺻﻮﺭﺕ ﺧﺎﻟﯽ‬
‫ﺑﻮﺩﻥ ﻟﯿﺴﺖ ‪ null‬ﭼﺎﭖ ﺷﻮﺩ‪.‬‬
‫‪ :"print" .۶‬ﭼﺎﭖ ﺩﻧﺒﺎﻟٔﻪ ﺍﻋﺪﺍﺩ ﺁﻣﺪﻩ ﺩﺭ ﻟﯿﺴﺖ ﺍﺯ ﺍﺑﺘﺪﺍ ﺑﻪ ﺍﻧﺘﻬﺎ ﺩﺭ ﯾﮏ ﺧﻂ ﺍﺯ ﻓﺎﯾﻞ ﺧﺮ ﻭﺟﯽ )ﺑﺎ ﯾﮏ ﻓﺎﺻﻠﻪ ﺑﯿﻦ‬
‫ﻫﺮ ﺩﻭ ﻋﺪﺩ(‪ .‬ﺩﺭ ﺻﻮﺭﺕ ﺧﺎﻟﯽ ﺑﻮﺩﻥ ﻟﯿﺴﺖ ﯾﮏ ﺧﻂ ﺧﺎﻟﯽ ﭼﺎﭖ ﺷﻮﺩ‪.‬‬
‫‪ :"print reverse" .۷‬ﭼﺎﭖ ﺩﻧﺒﺎﻟٔﻪ ﺍﻋﺪﺍﺩ ﺁﻣﺪﻩ ﺩﺭ ﻟﯿﺴﺖ ﺍﺯ ﺍﻧﺘﻬﺎ ﺑﻪ ﺍﺑﺘﺪﺍ ﺩﺭ ﯾﮏ ﺧﻂ ﺍﺯ ﻓﺎﯾﻞ ﺧﺮ ﻭﺟﯽ )ﺑﺎ ﯾﮏ‬
‫ﻓﺎﺻﻠﻪ ﺑﯿﻦ ﻫﺮ ﺩﻭﻋﺪﺩ(‪ .‬ﺩﺭ ﺻﻮﺭﺕ ﺧﺎﻟﯽ ﺑﻮﺩﻥ ﻟﯿﺴﺖ ﯾﮏ ﺧﻂ ﺧﺎﻟﯽ ﭼﺎﭖ ﺷﻮﺩ‪.‬‬
‫‪ n‬ﺗﻌﺪﺍﺩ ﮔﺮﻩﻫﺎﯼ ﻟﯿﺴﺖ ﺍﺳﺖ‪.‬‬
‫ﻋﻤﻠﻬﺎﯼ ‪ ۱‬ﻭ ‪ ۲‬ﺑﺎﯾﺪ ﺩﺭ )‪ O(۱‬ﺍﻧﺠﺎﻡ ﺷﻮﻧﺪ‪ ،‬ﻋﻤﻞ ‪ ۳‬ﺩﺭ ))‪ O(max(α, β‬ﻭ ﻋﻤﻞ ‪ ۵ ،۴‬ﻭ ‪ ۶‬ﺩﺭ )‪.O(n‬‬
‫ﺗﻮﺟﻪ‬
‫ﺩﺭ ﻫﺮ ﯾﮏ ﺍﺯ ﺧﻄﻬﺎﯼ ﻓﺎﯾﻞ ‪ list.in‬ﯾﮑﯽ ﺍﺯ ﺩﺳﺘﻮﺭﻫﺎﯼ ﺷﺸﮕﺎﻧٔﻪ ﺑﺎﻻ ﺑﺎ ﺁﺭﮔﻮﻣﺎﻧﻬﺎﯼ ﻣﺮﺑﻮﻃﻪ ﺁﻣﺪﻩ ﺍﺳﺖ‪ .‬ﺑﺮﻧﺎﻣٔﻪ ﺷﻤﺎ‬
‫ﭘﺲ ﺍﺯ ﺍﺟﺮﺍ‪ ،‬ﺑﺎﯾﺪ ﻓﺎﯾﻞ ‪ list.in‬ﺭﺍ ﺍﺯ ﭘﻮﺷٔﻪ ﺟﺎﺭﯼ ﺑﺨﻮﺍﻧﺪ ﻭ ﻓﺎﯾﻞ ‪ list.out‬ﺭﺍ ﺗﻮﻟﯿﺪ ﮐﻨﺪ ﮐﻪ ﻃﺒﻖ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻠﻬﺎﯼ ﺑﺎﻻ‬
‫ﻣﺸﺨﺺ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﺍﺯ ﺁﻧﺠﺎ ﮐﻪ ﻣﻘﺪﺍﺭﯼ ﺍﺯ ﻧﻤﺮٔﻩ ﺷﻤﺎ ﺑﻪ ﺩﺍﺩﻥ ﺗﻌﺪﺍﺩﯼ ﻭﺭ ﻭﺩﯼ ﻭ ﺑﺮ ﺭﺳﯽ ﺧﺮ ﻭﺟﯽ ﺑﺮﻧﺎﻣﻪﺗﺎﻥ ﺍﺧﺘﺼﺎﺹ‬
‫ﺩﺍﺭﺩ‪ ،‬ﺩﺭ ﭘﯿﺮ ﻭﯼ ﺩﻗﯿﻖ ﺍﺯ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻠﻬﺎﯼ ﺑﺎﻻ ﮐﻮﺷﺎ ﺑﺎﺷﯿﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﻧﻤﻮﻧﻪﺍﯼ ﺍﺯ ﻓﺎﯾﻞ ﻭﺭ ﻭﺩﯼ ﻭ ﺧﺮ ﻭﺟﯽِ ﻧﻤﻮﻧﻪ ﺩﺭ ﮐﻨﺎﺭ‬
‫ﺻﻮﺭﺕ ﭘﺮ ﻭﮊﻩ ﻗﺮﺍﺭ ﺩﺍﺭﺩ ﮐﻪ ﻣﯽﺗﻮﺍﻧﯿﺪ ﺑﺎ ﺁﻧﻬﺎ ﺑﺮﻧﺎﻣﻪﻫﺎﯾﺘﺎﻥ ﺭﺍ ﺗﺴﺖ ﮐﻨﯿﺪ‪.‬‬
‫‪۱‬ﺩﺭ ﺻﻮﺭﺕ ﺍﺭﺳﺎﻝ ﭘﺲ ﺍﺯ ﻣﻮﻋﺪ ﺗﺤﻮﯾﻞ ﺗﺎ ‪ ۸:۰۰‬ﺏ‪.‬ﻅ‪ ۸۵/۸/۲۵ .‬ﻧﯿﻤﯽ ﺍﺯ ﻧﻤﺮﻩ ﺭﺍ ﺍﺯ ﺩﺳﺖ ﻣﯽﺩﻫﯿﺪ ﻭ ﭘﺲ ﺍﺯ ﺁﻥ ﺗﻤﺎﻡ ﻧﻤﺮﻩ ﺭﺍ‪.‬‬
‫‪2 Doubly-linked list or Tow-way linked list‬‬
‫‪۱‬‬
‫ﺑﺮﻧﺎﻣﻪﻫﺎﯼ ﺧﻮﺩ ﺭﺍ ﻣﯽﺗﻮﺍﻧﯿﺪ ﺑﺎ ﺟﺎﻭﺍ ﻭ ﺑﺎ ﮐﺎﻣﭙﺎﯾﻠ ِﺮ ‪ JDK 1.5‬ﻭ ﯾﺎ ﺑﺎ ‪ C++‬ﻭ ﺑﺎ ﮐﺎﻣﭙﺎﯾﻠﺮ ‪ g++‬ﺑﻨﻮﯾﺴﯿﺪ‪ .‬ﺩﺭ ﻏﯿﺮ ﺍﯾﻦ‬
‫ﺻﻮﺭﺕ ﻧﻤﺮﻩﺍﯼ ﻧﺨﻮﺍﻫﯿﺪ ﮔﺮﻓﺖ‪ .‬ﺍﮔﺮ ﺑﺎ ﺟﺎﻭﺍ ﺑﺮﻧﺎﻣﻪ ﻣﯽﻧﻮﯾﺴﯿﺪ ﻧﺎﻡ ﮐﻼﺱ ﺍﺻﻠﯽ ﺧﻮﺩ ﺭﺍ ‪ Main‬ﺑﮕﺬﺍﺭ ﯾﺪ ﻭ ﺍﮔﺮ ﺑﺎ ‪C++‬‬
‫ﻣﯽﻧﻮﯾﺴﯿﺪ ﻧﺎﻡ ﻓﺎﯾﻞ ﺍﺻﻠﯽ ﺧﻮﺩ ﺭﺍ ‪ main.cpp‬ﺑﮕﺬﺍﺭ ﯾﺪ‪.‬‬
‫ﻓ‰ﺎﯾ‰ﻠ‰ﻬ‰ﺎﯼ ﺧ‰ﻮﺩ ﺭﺍ ﺩﺭ ﭘ‰ﻮﺷ‰ﻪﺍﯼ ﺑ‰ﺎ ﻧ‰ﺎﻡ ﺷ‰ﻤ‰ﺎﺭﻩﺩﺍﻧ‰ﺸ‰ﺠ‰ﻮ ﯾ‰ﯽﺗ‰ﺎﻥ ﺩﺭ ﯾ‰ﮏ ﻓ‰ﺎﯾ‰ﻞ ‪ zip‬ﺑ‰ﺎ ﻫ‰ﻤ‰ﯿ‰ﻦ ﻧ‰ﺎﻡ ﻗ‰ﺮﺍﺭ ﺩﻫ‰ﯿ‰ﺪ ﻭ ﺑ‰ﻪ ﺁﺩﺭﺱ‬
‫‪ [email protected]‬ﺍﯾ‰ﻤ‰ﯿ‰ﻞ ﺑ‰ﺰﻧ‰ﯿ‰ﺪ‪ subject .‬ﻧ‰ﺎﻣ‰ﻪﻫ‰ﺎﯼ ﺧ‰ﻮﺩ ﺭﺍ ﺣ‰ﺘ‰ﻤ‰ﺎً ‪ DS-Proj-1st-xxxxxxxx‬ﮐ‰ﻪ ‪x‬ﻫ‰ﺎ ﺑ‰ﺎ‬
‫ﺷﻤﺎﺭﻩﺩﺍﻧﺸﺠﻮﯾﯽ ﺷﻤﺎ ﺟﺎﯾﮕﺰﯾﻦ ﺷﺪﻩﺍﻧﺪ‪ ،‬ﻗﺮﺍﺭ ﺩﻫﯿﺪ‪.‬‬
‫»ﻣﻮﻓﻖ ﺑﺎﺷﯿﺪ«‬
‫‪۲‬‬