نویسنده : mohammad
Monday, December 14, 2009 4 comments
سوال 5 امتحان ساختمان داده
چند نفر از دانشجویان از طریق ایمیل درخواست پاسخ سوال 5 امتحان ساختمان داده رو کرده بودند.
سوال:تابعی بنویسید که دو لیست پیوندی a و b را گرفته و در لیست c ادغام کند بطوریکه لیست c مرتب باشد.
الگوریتم تابع:
اول از همه باید توجه داشته باشید که در صورت سوال گفته شده تابعی بنویسید.یعنی اینکه نیازی به نوشتن برنامه برای این سوال ندارید(از قبیل تابع main و دستورات پیش پردازنده و...)
خوب شروع می کنیم به نوشتن الگوریتم تابع :merge list
1)آرایه ای به نام a درست کن که دارای برای مثال 100 خانه باشد.
2)متغیر i را با مقدار اولیه صفر برای نگه داشتن اندیس آرایه a ایجاد کن.
3)لیست a را از firstاش شروع کن و تا زمانی که شرط (a->next !=null) برقرار است لیست را پیمایش کن و a->info را در a[i]o بریز.(در یک حلقه while این کار را انجام بده)
4)متغیر i را بعداز درج a->info در آرایه a یک واحد افزایش بده.(داخل حلقه while این کار را انجام بده)
5)لیست a را یک خانه به جلو ببرa=a->info.
6)مراحل 3 تا 5 را برای لیست b تکرار کن.
7)با استفاده از تابع sort که با الگوریتم bubble sort کار می کند آرایه a را مرتب کن.
8)یک لیست جدید با نام c ایجاد کن.
9)آرایه a را که اکنون آرایه ای مرتب شده است در لیست c درج کن (با استفاده از یک حلقه for این کار را انجام بده)
10)پایان.
شما که لطف کردين ميشه بقيه سوالهاي امتحان را همراه با کد اين سوال را هم بذاريد