سوال 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)پایان.
سوال:تابعی بنویسید که دو لیست پیوندی 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)پایان.
4
comments
Monday, December 14, 2009
توسط mohammad