ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>Å¥_ÀÚ·áÃß»ó
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang="ko">
<!-- -->
<!-- ¹®¼ Á¤º¸ -->
<!-- -->
<articleinfo>
<title>Å¥ ÀÚ·áÃß»ó</title>
<author>
<surname>À± »ó¹è</surname>
<affiliation>
<address>
<email>dreamyun@yahoo.co.kr</email>
</address>
</affiliation>
</author>
<revhistory>
<revision>
<revnumber>0.8</revnumber>
<date>2003³â 3¿ù 21ÀÏ 20½Ã</date>
<revremark>ÃÖÃÊ ¹®¼ÀÛ¼º</revremark>
</revision>
</revhistory>
</articleinfo>
<!-- -->
<!-- ¼½¼Ç ½ÃÀÛ -->
<!-- -->
<section>
<title>¼Ò°³</title>
<para>
Áö³¹øÀÇ Stack ÀڷᱸÁ¶¿¡ ÀÌ¾î¼ À̹ø¿¡´Â
Queue(ÀÌÇÏ Å¥) ÀڷᱸÁ¶¿¡ Å¥ ÀÚ·áÃß»ó ¿¡ ´ëÇØ¼
¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ¶Ç´Ù¸¥ ÀüÇô´Ù¸¥ ÀڷᱸÁ¶¶ó°í
º¼¼ö ÀÖ´Â Stack(ÀÌÇÏ ½ºÅÃ)°ú ÀÚÁÖ ºñ±³µÉ °ÍÀÌ´Ù.
½ºÅÿ¡ ´ëÇÑ ³»¿ëÀº <ulink url=http://www.joinc.co.kr/modules.php?name=News&file=article&sid=108>ÀڷᱸÁ¶ 2 - stack</ulink>À» Âü°íÇϱâ
¹Ù¶õ´Ù.
</para>
</section>
<section>
<title>Å¥ µ¥ÀÌŸ Ãß»ó</title>
<section>
<title>Å¥¿¡ ´ëÇØ¼</title>
<para>
Å¥´Â Áö³¹ø¿¡ ¹è¿ü´ø Stack °ú Á¾Á¾ ºñ±³µÇ°ï ÇÑ´Ù.
Stack ÀÌ ÈÄÀÔ¼±Ãâ(LILO - Last In Last Out)ÀÇ ÀÚ·á ÀÔÃâ·Â
±¸Á¶¸¦ °¡Áö´Â°Í¿¡ ºñÇØ,
Å¥´Â ¼±ÀÔ¼±Ãâ(FIFO - First In First Out)ÀÇ ÀÚ·á ±¸Á¶¸¦ °¡Áø´Ù.
ÇѸ¶µð·Î °¡Àå ¸ÕÀú ÀÔ·ÂµÈ µ¥ÀÌŸ°¡ °¡Àå ¸ÕÀú Ãâ·ÂµÇ´Â ÀڷᱸÁ¶´Ù.
<figure>
<title>Queue(Å¥) ÀڷᱸÁ¶¿¡¼ÀÇ ÀÔ·Â/Ãâ·Â </title>
<graphic fileref=http://www.joinc.co.kr/albums/album01/acc.gif>
</figure>
À§ÀÇ ±×¸²À» º¸¸é Å¥ÀڷᱸÁ¶¸¦ ½±°Ô ÀÌÇØÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù.
</para>
<para>
ÀÌ·¯ÇÑ Å¥ ÀڷᱸÁ¶´Â º¸Åë ¿ì¸®ÀÇ »ýȰ¿¡¼´Â ¸Å¿ì ÀÏ»óÀûÀÎ ÀڷᱸÁ¶
ÀÌ´Ù. Å¥ ÀڷᱸÁ¶ÀÇ ÇüŸ¦ °¡Àå ÈçÈ÷ º¼¼ö ÀÖ´Â°Ô "ÁÙ¼±â" °¡
µÉ°ÍÀÌ´Ù. ÀºÇà ⱸ¿¡¼ ÁÙÀ» ¼°Å³ª, ¹ö½º¸¦ ±â´Ù¸®±â À§Çؼ
ÁÙÀ» ¼³°æ¿ì °¡Àå ¸ÕÀú ÁÙÀ» ¼± »ç¶÷ÀÌ °¡Àå ¸ÕÀú, ÀºÇà¾÷¹«¸¦
ó¸®Çϰųª, ¹ö½º¸¦ Ÿ°Ô µÈ´Ù(»õÄ¡±â ÇÏ´Â °æ¿ì´Â »ý°¢ÇÏÁö ¸»ÀÚ).
</para>
<para>
ÀÌ·± ½ÄÀ¸·Î ½ÇÁ¦ ¿ì¸®°¡ »çȸ»ýȰÀ» ÇÏ¸é¼ ¹Þ°Ô µÇ´Â ´ëºÎºÐÀÇ
¼ºñ½ºµéÀº Å¥ ÀڷᱸÁ¶ ÇüÅ·ΠÀÌ·ç¾îÁö°Ô µÈ´Ù.
</para>
<para>
±×·¸´Ù¸é ½ºÅðú ºñ±³Çؼ ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹Ö½Ã¿¡ ÀÚÁÖ »ç¿ëµÇ´Â
ÀڷᱸÁ¶´Â ¹«¾ùÀ̶ó°í »ý°¢µÇ´Â°¡ ?
¹°·Ð Å¥µµ ÀÚÁÖ »ç¿ëµÇ±ä ÇÏÁö¸¸, Àç±ÍÀû È£Ãâ°úÀÇ ¿¬±¤¼º ¶§¹®¿¡
º¸ÅëÀº ½ºÅÃÀÌ ´õ¿í À¯¿ëÇÏ°Ô »ç¿ëµÈ´Ù.
¹ÙÀ̳ʸ® Æ®¸®¸¦ ¼øÈ¯ÇϰíÀÚ ÇÒ¶§, ȤÀº
¼ºêµð·ºÅ丮¸¦ Æ÷ÇÔÇÑ µð·ºÅ丮¸¦ °Ë»öÇϰíÀÚ ÇÏ´Â °æ¿ì
º¸Åë ½ºÅÃÀ» »ç¿ëÇÏ°Ô µÈ´Ù.
</para>
<para>
½ºÅÃÀÇ ¶Ç´Ù¸¥ »ç¿ëó¶ó¸é ÀÎÅÍ·´Æ®°¡ °É·ÈÀ»°æ¿ì°¡
µÉ°ÍÀÌ´Ù. °£´ÜÈ÷ ¿¹¸¦ µé¾î¼
¿ì¸®°¡ û¼Ò¸¦ Çϰí Àִµ¥, ÀüȺ§ÀÌ ¿ï¸®¸é(ÀÎÅÍ·¾Æ®°¡ ¹ß»ý)
û¼Ò¸¦ Áß´ÜÇϰí Àüȸ¦ ¹Þ°Ô µÈ´Ù. Àüȸ¦ ¹Þ´Â µµÁß¿¡
ÃÊÀÎÁ¾ÀÌ ¿ï¸®¸é ¿ì¸®´Â »ó´ë¹æ¿¡°Ô Àá½Ã ±â´Þ·Á ´Þ¶ó°í Çϰí
´©°¡ ¹æ¹®Çß´ÂÁö È®ÀÎÇÑ´ÙÀ½ ´Ù½Ã Àüȸ¦ ¹Þ¾Æ¼ Åëȸ¦ ³¡³»°í
´Ù½Ã û¼Ò¸¦ ÇÏ°Ô µÈ´Ù.
»ç°ÇÀÇ ¹ß»ý¼ø¼·Î º¸ÀÚ¸é û¼Ò°¡ °¡Àå¸ÕÀú°í ÃÊÀÎÁ¾¿ï¸°°Ô
°¡Àå ³ªÁß¿£µ¥, ó¸® ¼ø¼´Â ÃÊÀÎÁ¾¿¡ ´ëÇÑ Ã³¸®°¡ °¡Àå ¸ÕÀúÀÌ°í ´ÙÀ½ÀÌ
ÀüÈ ´ÙÀ½ÀÌ Ã»¼Ò°¡ µÈ´Ù. ¸Å¿ì ÀüÇüÀûÀÎ ½ºÅÃÀÇ ¿¹ÀÌ´Ù.
</para>
<para>
ÀÌ¿Í ºñ½ÁÇÏ°Ô ÇÁ·Î±×·¡¹Ö¿¡¼ÀÇ ÀÎÅÍ·´Æ® ó¸® ¿ª½Ã
½ºÅà ±¸Á¶¸¦ °¡Áö°Ô µÈ´Ù. A ¶ó´Â ÀÛ¾÷À» Çϰí Àִµ¥,
¸¸¾à ½Ã±×³ÎÀ» ÅëÇÑ ÀÎÅÍ·´Æ®°¡ ¹ß»ýµÇ¸é, ½Ã±×³Î Çڵ鷯°¡
È£ÃâµÇ°í, Çڵ鷯°¡ Á¾·áµÈ´ÙÀ½ ´Ù½Ã A·Î µ¹¾Æ°¡¼ ÀÛ¾÷À» ÇÏ´Â ½ÄÀÌ´Ù.
¾ö¹ÐÈ÷ µûÁöÀÚ¸é ÇÁ·Î±×·¡¹Ö ÀÚü°¡ ½ºÅÃÀÇ ±¸Á¶¸¦ °¡Áø´Ù.
ÃÖÃÊ¿¡ main ÇÔ¼ö¸¦ È£ÃâÇÏ°í µµÁß¿¡ A ¶ó´Â ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÇ¸é
A ÇÔ¼ö·Î ÀÛ¾÷À» µé¾î°¡°Ô µÈ´Ù. ´Ù½Ã A ¿¡¼ B ¶ó´Â ÇÔ¼ö¸¦ È£ÃâÇϸé
B ÇÔ¼ö·Î µé¾î°¡¼ ÀÛ¾÷À» ÇÏ°Ô µÇ°í, ¸®ÅÏÇÏ¸é ´Ù½Ã A ·Î, A¿¡¼ ¸®ÅÏÇϸé
´Ù½Ã main ÇÔ¼ö·Î µé¾î°¡´Â ÀüÇüÀûÀÎ ½ºÅÃÀڷᱸÁ¶ÀÇ ÇüŸ¦ Áö´Ñ´Ù.
</para>
<para>
±×·¸´Ù¸é ¿ì¸®°¡ °ü½ÉÀÖ¾îÇϴ ťÀÇ °æ¿ì ¾î¶²¶§ À¯¿ëÇϰÔ
»ç¿ëÇÒ¼ö ÀÖÀ»Áö »ý°¢Çغ¸ÀÚ. °¡Àå °£´ÜÇÏ°Ô »ý°¢ÇÒ¼ö ÀÖ´Â °ÍÀº
<emphasis>µ¥ÀÌŸÀÇ È帧</emphasis>À» ó¸®ÇÏ´Â °æ¿ì°¡ µÉ°ÍÀÌ´Ù. µ¥ÀÌŸ´Â ¸ÕÀúµé¾î¿Â°É
¸ÕÀú ó¸®ÇÏ´Â°Ô ÀϹÝÀûÀÎ ¼ø¼ÀÌ´Ù. ÀÌ·± µ¥ÀÌŸÀÇ È帧À» ó¸®Çϱâ
À§Çؼ Å¥¸¦ ÀÀ¿ëÇÏ´Â °¡Àå ´ëÇ¥ÀûÀÎ °æ¿ì°¡ ¹Ù·Î ¹öÆÛ(Buffer)ÀÇ »ç¿ëÀÌ
µÉ°ÍÀ̸ç, °ÅÀÇ 100% Å¥´Â ¹öÆÛ¸¦ ±¸ÇöÇϴµ¥ »ç¿ëµÇ´Â ÀڷᱸÁ¶¶ó°í ºÁµµ µÈ´Ù.
</para>
<para>
ÇÁ·Î±×·¡¹Ö ÇÏ¸é¼ "Å¥"¸¦ ½á¾ß ÇÑ´Ù¶ó°í Çϸé, À̸»Àº °ð "¹öÆÛ"¸¦ »ç¿ëÇØ¾ß
ÇÑ´Ù´Â ¸»·Î ÅëÇÒÁ¤µµ·Î Å¥¿Í ¹öÆÛ´Â ¶¿·¡¾ß ¶¿¼ö ¾ø´Â °ü°èÀÌ´Ù.
</para>
</section>
<section>
<title>Å¥ÀÇ ±¸Çö</title>
<para>
À§¿¡¼ ¸»ÇßµíÀÌ Å¥´Â ¹öÆÛ¸¦ ¸¸µé¶§ °¡Àå ÈçÇÏ°Ô »ç¿ëµÇ´Â ÀڷᱸÁ¶ÀÌ´Ù.
ÇÁ·Î±×·¡¹Ö½Ã ¹öÆÛ°¡ »ç¿ëµÇ´Â °æ¿ì´Â º¸Åë ¿ÏÃæ¿µ¿ªÀ» µÎ¾î¼,
ÇÁ·Î±×·¥ÀÇ ¾ÈÁ¤¼ºÀ» ³ôÀ̱â À§ÇÑ ¿ëµµ ÀÌ´Ù.
</para>
<para>
¿¹¸¦ µé¾î ³×Æ®¿÷¿¡¼ ¾î¶² ¸Þ½ÃÁö¸¦ ¹Þ¾Æ¼ ó¸®ÇÏ´Â ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù°í
°¡Á¤ÇØ º¸ÀÚ. ÀÌ·± ÇÁ·Î±×·¥Àº º¸Åë ³×Æ®¿÷¿¡¼ ¸Þ½ÃÁö¸¦ ¹Þ¾ÆµéÀÌ´Â ºÎºÐ°ú
¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â ºÎºÐÀ¸·Î ³ª´µ°Ô µÉ°ÍÀÌ´Ù.
±×·±µ¥ µÑ»çÀÌ¿¡ ¸Þ½ÃÁö¸¦ ó¸®ÇÒ¼ö ÀÖ´Â ¾ç¿¡ ÀÖ¾î¼ Â÷À̰¡ ÀÖÀ»¼ö ÀÖÀ» °ÍÀÌ´Ù.
¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â ·çƾÀÌ ÃÊ´ç 1000°ÇÀÇ ¸Þ½ÃÁö¸¦ ó¸®ÇÒ¼ö ÀÖ´Ù°í °¡Á¤À» ÇÏÀÚ.
ÀÌ 1000°ÇÀÇ ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â ´É·ÂÀº ¸Å¿ì ¶Ù¾î³ª´Ù°í ÇÒ¼ö ÀÖÁö¸¸,
¶§¶§·Î ³×Æ®¿÷À» ÅëÇØ¼ 1000°Ç ÀÌ»óÀÇ ¸Þ½ÃÁö°¡ Àü´ÞµÉ¶§µµ ÀÖÀ»°ÍÀÌ´Ù.
ÀÌ·²°æ¿ì ÀÌ ¸Þ½ÃÁö ó¸® ÇÁ·Î±×·¥»Ó¸¸ ¾Æ´Ï¶ó, ÀÌ ÇÁ·Î±×·¥ÀÌ ¼ÓÇØÀÖ´Â
½Ã½ºÅÛ¸ðµÎ¿¡°Ô ¿µÇâÀ» ¹Ì°Ô µÉ°ÍÀÌ´Ù.
ÀÌ·²°æ¿ì Å¥¸¦ ÀÌ¿ëÇØ¼ ¹öÆÛ¸¦ ¸¸µé°Ô µÇ¸é, 1000°Ç ÀÌ»óÀÇ ¸¹Àº µ¥ÀÌŸ°¡
¹ß»ýÇÒ¶§´Â ¹öÆÛ¿¡ ½×ÀÌ´Ù°¡, ¸Þ½ÃÁö°¡ Àû°Ô µé¾î¿À¸é ¹öÆÛ¿¡ ÀÖ´Â µ¥ÀÌŸ¸¦
¸ðµÎ ó¸®ÇØ ³¾¼ö ÀÖÀ»°ÍÀÌ´Ù. ÀÌ·¸°Ô µÊÀ¸·Î½á ÇϳªÀÇ ÇÁ·Î±×·¥ÀÇ ¼º´ÉÀúÇÏ·Î
ÀÎÇØ¼ Àüü ½Ã½ºÅÛÀÇ ¼º´ÉÀÌ ÀúÇϵǴ ¹®Á¦¸¦ ¾î´ÀÁ¤µµ ÇØ°á°¡´ÉÇÒ °ÍÀÌ´Ù.
</para>
<section>
<title>Å¥ µ¥ÀÌŸÃß»óÀ» À§Çؼ ±â¼úµÇ¾î¾ßÇÒ ÇØµ¿</title>
<para>
Çൿ´ë½Å ¸Þ¼µå¶ó°í ÇØµµ °ü°è´Â ¾ø´Ù. µ¥ÀÌŸ Ãß»óÀº
ÇÁ·Î±×·¡¸Ó(Ŭ·¡½º »ç¿ëÀÚ)¿¡°Ô ³»ºÎ±¸ÇöÀº ¼û±â´Â°É ±âº»¿øÄ¢À¸·Î
ÇÑ´Ù. ±×·³À¸·Î °¡´ÉÇÑÇÑ ÇÁ·Î±×·¡¸Ó°¡ ³»ºÎ±¸Çö¿¡ ½Å°æ¾µÀÏÀÌ ¾øµµ·Ï
ÇÊ¿äÇÑ ¸Þ¼µå¸¦ Á¦°øÇØÁÙ¼ö ÀÖ¾î¾ß ÇÑ´Ù.
´ÙÀ½Àº Å¥ µ¥ÀÌŸÃß»óÀ» À§Çؼ ±âº»ÀûÀ¸·Î Á¦°øµÇ¾î¾ßÇÒ ¸Þ¼µå¿Í
°¢ ¸Þ¼µå°¡ ¼û±â°íÀÖ´Â(Ãß»óÈÇϰí ÀÖ´Â) ±¸Çöµé¿¡ ´ëÇÑ ¼³¸íÀÌ´Ù.
<table>
<title>Å¥ µ¥ÀÌŸ Ãß»óÀ» À§ÇÑ Á¦°ø ¸Þ¼µå</title>
<tgroup cols=2>
<tbody>
<row>
<entry>Queue</entry>
<entry>»ý¼ºÀÚ·Î ÁöÁ¤µÈ Å©±â¸¸Å Å¥°ø°£À» ÇÒ´çÇÑ´Ù</entry>
</row>
<row>
<entry>~Queue</entry>
<entry>¼Ò¸êÀÚ·Î ÇÒ´çµÈ Å¥°ø°£À» ÇØÁ¦(free)ÇÑ´Ù.</entry>
</row>
<row>
<entry>push_back</entry>
<entry>µ¥ÀÌŸ¸¦ ÀÔ·ÂÇÑ´Ù. ¸¸¾à capacity ¸¦ ÃʰúÇÏ°Ô µÉ°æ¿ì realloc ÇÑ´Ù.</entry>
</row>
<row>
<entry>pop</entry>
<entry>°¡Àå ÃÖ±Ùµ¥ÀÌŸ¸¦ °¡Á®¿À°í, °¡Á®¿Âµ¥ÀÌŸ´Â Å¥¿¡¼ »èÁ¦ÇÑ´Ù.</entry>
</row>
<row>
<entry>size</entry>
<entry>ÇöÀç Å¥¿¡ ÀúÀåµÈ µ¥ÀÌŸÀÇ °¹¼ö¸¦ ¾ò¾î³½´Ù.</entry>
</row>
<row>
<entry>capacity</entry>
<entry>ÇöÀç Å¥¸¦ À§ÇØ ÇÒ´çµÈ ¿ë·®(¸Þ¸ð¸®Å©±â)¸¦ ¾ò¾î³½´Ù.</entry>
</row>
<row>
<entry>clear</entry>
<entry>Å¥¿¡ ÀÖ´Â ¸ðµç ¿ø¼Ò¸¦ »èÁ¦ÇÑ´Ù.</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</section>
<section>
<title>±¸Çö ¿¹ - circular queue</title>
<para>
Å¥¸¦ ±¸ÇöÇÏ´Â °¡Àå ÀϹÝÀûÀÎ ¹æ¹ýÀº ½ºÅðú ¸¶Âù°¡Áö·Î ¹è¿À» ÀÌ¿ëÇÏ´Â
¹æ¹ýÀÌ´Ù. ±×·¯³ª ´Ü¼ø¹è¿·Î ÇÒ°æ¿ì ¹è¿ÀÇ Å©±â°¡ ÁöÁ¤µÇ¾î ÀÖ´Â »óÅ¿¡¼
µ¥ÀÌŸ°¡ °è¼Ó Ãß°¡µÇ°Ô µÇ¸é ¾î´À ½ÃÁ¡¿¡¼ overflow °¡ ¹ß»ýÇÏ°Ô µÊÀ¸·Î
µ¥ÀÌŸ°¡ ¹è¿ÀÇ Å©±â¸¦ ÃʰúÇÏ°Ô µÇ¸é, ÃʰúµÈ µ¥ÀÌŸ´Â 0¹øÂ° ¹è¿·Î µé¾î°¡°Ô
ÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ±¸Á¶°¡ ȯÇü±¸Á¶¿Í °°´Ù°í ÇØ¼ º¸Åë ȯÇüÅ¥(circular queue)
¶ó°í ÇÑ´Ù.
</para>
<para>
¿ì¸®´Â circular queue ¸¦ ÀÌ¿ëÇØ¼ö Å¥ÀÚ·áÃß»ó(ADT)¸¦ ¸¸µé°í À̰ÍÀ»
Å×½ºÆ® ÇÒ°ÍÀÌ´Ù.
</para>
<para>
¿¹Á¦ÄÚµå´Â template ¸¦ ÀÌ¿ëÇØ¼ ÀÛ¼ºµÉ°ÍÀÌ´Ù.
template ¸¦ ÀÌ¿ëÇÔÀ¸·Î½á, ÀÚ·áÇü¿¡ °ü°è¾øÀÌ À¯¿¬ÇÑ ÀڷᱸÁ¶ÀÇ
±¸ÃàÀÌ °¡´ÉÇÒ°ÍÀÌ´Ù.
</para>
<para>
<emphasis>¿¹Á¦ : circular_queue.c</emphasis>
<screen>
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
template <typename T1>
class Queue
{
private:
int MaxSize;
int DataIndex;
int QueueSize;
T1 *Array;
int PushNum;
public:
// »ý¼ºÀÚ·Î½á µðÆúÆ® ¾Æ±Ô¸ÕÆ®·Î
// Å¥ÀÇ »çÀÌÁ ÁöÁ¤Çß´Ù.
// ¾Æ±Ô¸ÕÆ®·Î ³Ñ¾î¿Â Å©±â¸¸Å Array ÀÇ Å©±â¸¦
// ÇÒ´çÇÏ°í ±âŸ ¸â¹öº¯¼öµéÀÇ °ªÀ» Àû´çÈ÷ ÃʱâÈ ÇÑ´Ù. Queue(int size=40)
{
MaxSize = size;
Array = (T1 *)malloc(sizeof(T1)*MaxSize);
QueueSize = 0;
DataIndex = 0;
PushNum = 0;
}
// ¼Ò¸êÀÚ ÀÚ¿øÀ» ÇØÁ¦ÇÑ´Ù.
~Queue()
{
free(Array);
}
// Array¿¡ ¿ø¼Ò¸¦ ÀÔ·ÂÇÑ´Ù.
// ¸¸¾à¿¡ Array ÀÇ Å©±â¸¦ ÃʰúÇØ¼ ¿ø¼Ò°¡ µé¾î°¥°æ¿ì
// MaxSize*2 Å©±â¸¸Å ¸Þ¸ð¸®ÀÇ Å©±â¸¦ ÀçÇÒ´çÇÑ´Ù.
void push_back(T1 x)
{
if (QueueSize > MaxSize - 1)
{
MaxSize *= 2;
if ((Array = (T1 *)realloc(Array, sizeof(T1)*MaxSize)) == NULL)
{
perror("realloc error:");
exit(0);
}
cout << "Realloc OK" << endl;
}
Array[PushNum%MaxSize] = x;
PushNum++;
QueueSize++;
}
// µ¥ÀÌŸ¸¦ ²¨³½´Ù.
T1 pop()
{
QueueSize--;
DataIndex++;
return Array[(DataIndex-1)%MaxSize];
}
// Å¥¿¡ ÀÖ´Â µ¥ÀÌŸÀÇ °¹¼ö¸¦ ¾ò¾î¿Â´Ù.
int size()
{
return QueueSize;
}
// Å¥ÀÇ Å©±â¸¦ ¾ò¾î¿Â´Ù.
int capacity()
{
return MaxSize;
}
// ¿ø¼Ò¸¦ »èÁ¦ÇÑ´Ù.
// ½ÇÁ¦ µ¥ÀÌŸ¸¦ free ½ÃŰÁö´Â ¾Ê°í, Index
// °ªµéÀ» Á¶Á¤Çؼ »èÁ¦ÇÑ°Í Ã³·³ º¸ÀÌ°Ô ÇÑ´Ù.
void clear()
{
QueueSize = 0;
DataIndex = 0;
PushNum = 0;
}
};
int main()
{
Queue<char *> myqueue(4);
cout << "Queue capacity " << myqueue.capacity() << endl;
myqueue.push_back("hello 1");
myqueue.push_back("hello 2");
myqueue.push_back("hello 3");
myqueue.push_back("hello 4");
myqueue.push_back("hello 5");
myqueue.push_back("hello 6");
int size = myqueue.size();
for (int i = 0; i < size; i++)
cout << myqueue.pop() << endl;
myqueue.push_back("hello 1");
myqueue.push_back("hello 2");
myqueue.push_back("hello 3");
myqueue.push_back("hello 4");
for (int i = 0; i < size; i++)
cout << myqueue.pop() << endl;
cout << "Queue capacity " << myqueue.capacity() << endl;
myqueue.clear();
cout << "Queue Size " << myqueue.size() << endl;
}
</screen>
¿¹Á¦´Â ÁÖ¼®¸¸À¸·Îµµ ÃæºÐÈ÷ ÀÌÇØ°¡ °¡´ÉÇÒ °ÍÀÌ´Ù.
½ÇÁ¦ STL ÀÇ deque ¿Í ¸Å¿ì ºñ½ÁÇÏ°Ô ±¸ÇöµÇ¾úÀ½À» ¾Ë¼ö ÀÖ´Ù.
</para>
</section>
<section>
<title>±¸Çö ¿¹ - linked list</title>
<para>
queue ¸¦ ±¸ÇöÇÒ¼ö ÀÖ´Â ¶Ç´Ù¸¥ ¹æ¹ýÀº linked list ¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀ¸·Î
¹è¿·Î ±¸ÇöµÇ´Â circular queue ¿¡ ºñÇØ¼ Á»´õ ±î´Ù·Ó´Ù. ¶ÇÇÑ
pop À» ÇÒ¶§ °¡Á®¿Â µ¥ÀÌŸÀÇ °æ¿ì ÀÚ¿øÇØÁ¦(free)¸¦ ÇØÁà¾ßÇϰí,
µ¥ÀÌŸ¸¦ push_back ÇÒ°æ¿ì »õ·Î¿î °ø°£À» ¸¸µé¾î¾ß Çϱ⠶§¹®¿¡ À§ÀÇ circular
queue ¿¡ ºñÇØ¼ Á»´õ ºñÈ¿À²ÀûÀÌ µÉ°æ¿ì°¡ ¸¹´Ù.
³ªÁß¿¡ linked list ¿¡¼ ÀÚ¼¼ÇÏ°Ô ´Ù·ê ¿¹Á¤ÀÓÀ¸·Î
¿©±â¿¡¼´Â linked list ·Î ±¸ÇöÇÏ´Â ¿¹Á¦´Â ´Ù·çÁö ¾ÊÀ»°ÍÀÌ´Ù.
°³ÀÎÀûÀ¸·Î ±¸ÇöÇØº¸°í ½Í´Ù¸é,
<ulink url=http://www.joinc.co.kr/modules.php?name=News&file=article&sid=89>µ¿Àû ¸Þ¸ð¸®ÇÒ´ç</ulink>À» Âü°íÇØ¼ ±¸ÇöÇØº¸±â ¹Ù¶õ´Ù.
</para>
</section>
</section>
</section>
<section>
<title>°á·Ð</title>
<para>
ÀÌ»ó °£´ÜÇÏ°Ô Å¥ÀÚ·áÃß»ó¿¡ ´ëÇØ¼ ¾Ë¾Æº¸¾Ò´Ù.
¾Æ¸¶ ½ºÅÃÀÚ·áÃß»ó°ú ¸¶Âù°¡Áö·Î ¸Å¿ì ÆòÀÌÇÑ ¼öÁØÀÇ ±ÛÀÌ¿´À»°ÍÀ¸·Î »ý°¢µÈ´Ù.
´ÙÀ½ °Á´ linked list ¿Í ÀÌÀÇ ÀÀ¿ë¿¡ ´ëÇѳ»¿ëÀ» ´Ù·ç°Ô µÉ°ÍÀÌ´Ù.
</para>
</section>
</article>
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|