صف حلقوی 🚀
صف حلقوی یا Circular Queue ساختاری برای مدیریت دادههاست که به بهینهسازی حافظه کمک میکند. این نوع صف بهگونهای طراحی شده که انتهای صف به ابتدای آن متصل است، بنابراین از فضای موجود به بهترین شکل ممکن استفاده میشود. در این صف، وقتی به انتهای آرایه میرسیم، اضافه کردن عناصر جدید از ابتدای آن ادامه مییابد و صف به شکل دایرهای عمل میکند. 🌐
ویژگیهای صف حلقوی ✨
1. استفاده بهینه از حافظه: برخلاف صف عادی که پس از چندین بار حذف عناصر از ابتدا، فضای جلویی بلااستفاده میماند، در صف حلقوی میتوان از این فضای خالی مجدد استفاده کرد. این ویژگی باعث میشود حافظه اتلاف نشود. 🧠
2. اندیسدهی چرخشی: در صف حلقوی، اندیسها به صورت چرخشی حرکت میکنند. یعنی وقتی به انتهای آرایه رسیدیم، میتوانیم به اندیس ابتدایی بازگردیم و عناصر جدید را اضافه کنیم. 🔄
3. حل مشکل اورفلو کاذب: در صف عادی ممکن است پس از چند بار dequeue (حذف عنصر) فضای خالی باقی بماند ولی همچنان با خطای پر بودن مواجه شویم. در صف حلقوی، این مشکل با استفاده از فضای خالی جلوی صف حل میشود. ✅
پیادهسازی صف حلقوی ⚙️
برای پیادهسازی این صف، معمولاً از یک آرایه و دو اندیس استفاده میشود:
- Front:
موقعیت اولین عنصر صف را نشان میدهد.
- Rear:
موقعیت آخرین عنصر صف را نشان میدهد.
این اندیسها به صورت مدولار (%) حرکت میکنند تا در صورت رسیدن به انتهای آرایه، به ابتدای آن بازگردند. این چرخش اجازه میدهد صف بهصورت دایرهای عمل کند. 🔄
عملیاتهای اصلی صف حلقوی 🛠
- enqueue (اضافه کردن):
عنصر جدید به انتهای صف افزوده میشود. اگر صف پر نباشد، عنصر در محل Rear قرار میگیرد و Rear به اندیس بعدی (با کمک مدولار) تغییر میکند. ➕
- dequeue (حذف کردن):
اولین عنصر از صف حذف میشود. اگر صف خالی نباشد، عنصر در موقعیت Front حذف میشود و Front به اندیس بعدی تغییر میکند. ➖
کاربردهای صف حلقوی 📊
این صف در شبکههای کامپیوتری و سیستمهای عامل بسیار کاربرد دارد؛ جایی که پردازشها به طور چرخشی اجرا شده و از منابع بهینه استفاده میشود. برای مثال، در مدیریت بستههای داده در شبکه یا زمانبندی پردازندهها، صف حلقوی به کار میآید.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
4.7K ·