if (++count > size)
throw new Exception("queue is full")
queue[tail++] = input;
if (tail == size)
tail = 0;
سلام این قسمت از برنامه یه خطای منطقی از دید من دارد لطفا راهنمایی بفرمایید:
وقتی که به انتهای صف برسیم if tail == size برای اینکه عملیات دوبار ه از سر صف انجام شود tail را صفر میکند و چون tail صفر شده منطق این است دوباره بتوان از سر صف نوشت و اصلا دلیل صفر شدن ان هم همین است در ادامه دوباره به ایتدای شرط if بر میگردد ولی اینجا خطای ی پر شدن صف را میدهد و برنامه متوقف میشود و عمل بازنویسی صورت نمیگیرد حالا به نظر من یا نباید خطا را میدادیم و یا نباید tail را صفر میکردیم و یا اگر خطا دادیم باید طوری مدیریت میکردیم که برنامه متوقف نشود و دوباره از ابتدای صف قابلیت باز نویسی صورت بگیرد.همین اقدام برای متد بعد هم صورت میگیرد.