public class circlQueue { static public int DEFAULT_SIZE = 4; static public int rear; static public int front; static public int[] queue; public int size; // ȯÇü Å¥ÀÇ »ý¼ºÀÚ. // ¸¸¾à ¾Æ¹« ¸Å°³ º¯¼ö°¡ ¾øÀÌ È£Ãâ µÈ´Ù¸é ±âº» Å©±â·Î »ý¼ºµÈ´Ù. circlQueue() { this(DEFAULT_SIZE); } // int ¸Å°³º¯¼öÀÎ size °¡ ÀÖÀ»¶§ Á¤ÇØÁø Å©±â·Î Å¥¸¦ ¸¸µç´Ù. // ´Ü size - 1 °³ÀÇ ÀڷḦ ³ÖÀ» ¼ö Àִ ť°¡ »ý¼ºµÈ´Ù. // ȯÇüÅ¥´Â Å¥°¡ °¡µæ áÀ»¶§¿¡µµ ÇÑÄ­ÀÇ ¿©ºÐÀÌ ³²¾Æ Àֱ⠶§¹®ÀÌ´Ù. circlQueue(int size) { this.size = size; queue = new int[size]; // for ¹®À» ÀÌ¿ëÇØ Object ¹è¿­¿¡¼­ °¢ Object¸¦ ÃʱâÈ­ ½ÃŲ´Ù. for (int tempCount=0 ; tempCount < size ; tempCount++ ){ queue[tempCount] = 0; } front = 0; rear = 0; } // Å¥¿¡¼­ µ¥ÀÌÅ͸¦ ²¨³½´Ù. // ´Ü peek()¿¡¼­ nullÀ» ¹ÝȯÇÏ¸é µ¥ÀÌÅÍ°¡ ¾ø´Â°ÍÀ¸·Î °¡Á¤ÇÑ´Ù. // ¿©±â¼­ ¹®Á¦ - ¸¸¾à ÀÓÀÇ·Î null À̶ó´Â °ÍÀ» ³Ö¾î µÎ¾ú´Ù¸é // Á¤»óÀÛµ¿ ÇÏÁö ¾Ê´Â ¹®Á¦°¡ ÀÖ´Ù. public int deQueue() { int obj = 0; obj = peek(); if ( obj != -1 ) { moveRear(); } return obj; } // Å¥¿¡ µ¥ÀÌÅ͸¦ ³Ö´Â´Ù. public boolean enQueue(int obj) { boolean bool; // Å¥°¡ °¡µæÂ÷Áö ¾Ê¾Ò´ÂÁö È®ÀÎÇÏ°í µ¥ÀÌÅ͸¦ ³Ö´Â´Ù. if (!isFull()) { queue[front] = obj; moveFront(); bool = true; } else { System.out.println("Å¥°¡ °¡µæ Â÷¼­ ´õ ÀÌ»ó ³ÖÁö ¸øÇÕ´Ï´Ù.") ; bool = false; } return bool; } // ÇöÀç Ãⱸ¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ È®ÀÎÇÑ´Ù. // ¸¸¾à µ¥ÀÌÅÍ°¡ ÀÖ´Ù¸é Object¸¦ ³Ñ°ÜÁÖ°í ¾ø´Ù¸é nullÀ» ³Ñ°ÜÁØ´Ù. private int peek() { int obj = -1; if (!isEmpty()) { obj = queue[rear]; } else { System.out.println("Å¥¿¡ ´õÀÌ»ó µ¥ÀÌÅÍ°¡ ¾ø¾î¼­ ²¨³¾¼ö ¾ø½À´Ï´Ù"); } return obj; } private boolean isFull() { // ÀÔ±¸¿¡¼­ Ãⱸ°¡ ¾ÕÂÊÀ¸·Î 1Ä­ Â÷ÀÌ¸é °¡µæ Âù°ÍÀÌ´Ù. if ( (front + 1 )%size == rear ) return true; else return false; } private boolean isEmpty() { // ÀÔ±¸¿Í Ãⱸ°¡ °°´Ù¸é ÀÚ·á°¡ Çϳªµµ ¾ø´Â °ÍÀÌ´Ù. if ( front == rear ) return true; else return false; } private boolean moveFront() { // ÀڷḦ Çϳª ³Ö¾úÀ»¶§ ÀÔ±¸¸¦ ÇÑÄ­ ¹Ð¾î ÁØ´Ù. front = (front+1)%size; return true; } private boolean moveRear() { // ÀڷḦ Çϳª »¬¶§ Ãⱸ¸¦ ÇÑÄ­ ¹Ð¾î ÁØ´Ù. rear = (rear+1)%size; return true; } }