150 likes | 377 Views
صف و پشته. صف. ليست مرتب با خواص زير: تمام الحاقها در يک طرف انجام مي گردند. (tail) تمام حذفها در طرف ديگر انجام مي شوند. (head) صف: Q = (a 0 , a 1 , … , a n-1 ) a 0 عنصر ابتداي ليست و a n-1 عنصر انتهاي ليست است. براي تمام 1 <= i < n ، a i پشت سر a i-1 قرار دارد. صف.
E N D
صف ليست مرتب با خواص زير: • تمام الحاقها در يک طرف انجام مي گردند. (tail) • تمام حذفها در طرف ديگر انجام مي شوند. (head) صف: Q = (a0, a1, …, an-1) a0 عنصر ابتداي ليست وan-1 عنصر انتهاي ليست است. براي تمام 1 <= i < n ،ai پشت سر ai-1 قرار دارد
صف • بخاطر خواص الحاق و حذف، صف خيلي شبيه: • صف نانوايي • ماشينها در ترافيک • بسته هاي داده در مسيريابها • ... • است. • از صف همچنين به عنوانfirst-in first out ياد مي شود.
پیاده سازی • ابتدا بایستی توابع مورد انتظار و لازم را تعیین کنیم • تابع Add • مقداری جدید را به انتهای صف اضافه می کند. • تابع Delete • مقدار ابتدای صف را حذف کرده و بر می گرداند. • می توان از آرایه ها برای پیاده سازی صف استفاده کرد.
پیاده سازی Q[0] همیشه عنصر ابتدای صف باشد. متغییری مانند rear داشته باشیم که عنصر انتهای صف را نشان دهد. Q[rear] عنصر انتها خواهد بود.
صف در کتابخانه یqueue مقدار جدیدی را در داخل صف قرار می دهد آیا صف خالی است؟ مقدار عنصر ابتدای صف را بر می گرداند، ولی حذف نمی کند عنصر ابتدای صف را حذف می کند
پشته INSERT DELETE A3 A3 TOP A2 A2 A2 TOP TOP A1 A1 A1 A0 A0 A0 • پشته يک ليست مرتب با يک خاصيت ويژه: • عنصری که دیرتر وارد شده است اولویت بیشتری دارد.
مثال readFile() getData() main() مثال واقعي از پشته: در هنگام اجراي برنامه؛ اگر تابعي صدا شود از پشته استفاده مي گردد. وقتي يک تابع جديد صدا زده مي گردد، آن تابع بالاي پشته قرار مي گيرد. وقتي تابع تمام شد، تابع از پشته برداشته مي شود و کنترل به تابع صدا زننده که زير آن در پشته قرار دارد برگردانده مي شود. روشهاي بازگشتي از پشته خيلي استفاده مي کنند و رشد پشته در روشهاي بازگشتي زياد است.