همه چیز درباره Queue (صف)

در فرهنگ لغت، صف یا کیو به معنای "خط انتظار" است، مثل صفی که مردم برای گرفتن نان در گرفتن نان در جلوی نانوایی تشکیل میدهند.

صف یک ساختار داده انتزاعی است که ترتیبی FIFO (اولین ورودی، اولین خروجی) یا در بعضی مراجع بصورت گفته میشود LILO (اولین ورودی، اولین خروجی) را برای ذخیره و بازیابی داده ها ارائه می دهد.

داده ساختار صف حالت های مختلف زیادی داره که هر کدوم بسته به شرایط و کاربرد استفاده میشن :

هر داده ساختاری یک سری عملیات ها و توابع برای اجرای کار به خصوصی دارند که صف هم از این استثنا خارج نیست , توابع مهم صف عبارتند از :

در عکس زیر شما یک صف رو مشاهده می کنید که با یک آرایه حلقوی پیاده سازی شده است.

Queue image

در صف دو اشاره‌گر به نام‌های front (یا head) و rear (tail یا back) وجود دارند که برای ردیابی عناصر صف استفاده می‌شوند.

Front : به اولین عنصری که باید از صف حذف شود اشاره می‌کند.

Rear : به آخرین عنصر یا در برخی پیاده سازی ها به عنصر بعد از آخرین عنصر که به صف اضافه شده است اشاره می‌کند.

پیچیدگی زمانی داده ساختار صف رو مشاهده می کنید که از سرعت بالایی برای اضافه کردن و حذف کردن برخورداره.

time

همون طور که میدونید صف یک داده ساختار انتزاعی هستش و میتونیم اون رو به روش های مختلفی پیاده سازی کنیم , دو روش رایج برای پیاده صف عبارتند از :

  • آرایه (Array)
  • لیست پیوندی (Linked List)
  • انتخاب این که از کدام روش های بالا برای پیاده سازی صف استفاده کنیم تاثیر بسزایی در کارایی و عملکرد مناسبی که ما در نظر داریم می شود :

    داده ساختار صف کاربرد های زیادی در الگوریتم ها و حتی کارکرد مرورگر ها و ادیتور ها داره.

    امیدوارم که این آموزش برای شما مفید بوده باشه :)

    Telegram Icon Youtube Icon GitHub Icon