19-4-³ª.¿¬°á ¸®½ºÆ®·Î ±¸ÇöÇÑ Å¥

¹è¿­·Î Å¥¸¦ ¸¸µé¾úÀ» ¶§´Â ¸î °¡Áö ºÒÆíÇÑ Á¡ÀÌ ÀÖ´Ù. ¿ì¼± ¹è¿­ÀÇ Å©±âº¸´Ù ´õ ¸¹Àº µ¥ÀÌÅͰ¡ »ðÀԵǸé Å¥°¡ °¡µæ Â÷¼­ ´õ ÀÌ»ó »ðÀÔÇÒ ¼ö ¾ø´Â ¿À¹öÇ÷ο찡 ¹ß»ýÇÑ´Ù´Â Á¡ÀÌ´Ù. ±×·¡¼­ ÇÊ¿äÇÑ ÃÖ´ë Å©±â¸¦ Àß °í·ÁÇÏ¿© ÃæºÐÇÑ Å©±â·Î ÇÒ´çÇØ¾ß ÇÑ´Ù. ±×·¯³ª ¾Æ¹«¸® ³Ë³ËÇØµµ ¹«ÇÑÇÏÁö´Â ¾Ê±â ¶§¹®¿¡ ¾ðÁ¦ ºÎÁ·ÇÑ »óȲÀÌ ¹ß»ýÇÒÁö ¿¹ÃøÇÒ ¼ö ¾ø´Ù. ¹°·Ð µ¿Àû ¹è¿­À» ¾µ ¼öµµ ÀÖ°ÚÁö¸¸ ¿©·¯ °¡Áö »óȲÀ¸·Î º¼ ¶§ ¾î¿ï¸®Áö ¾Ê´Â´Ù.

¶ÇÇÑ ¹è¿­Àº ¿¬¼ÓÀûÀÎ ¸Þ¸ð¸® °ø°£À» Â÷ÁöÇÏ´Â Á÷¼±ÀûÀÎ ±¸Á¶¸¦ °¡Áö±â ¶§¹®¿¡ ÃÖ´ë Å©±â¸¸Å­ ÃæºÐÇÑ ¿ë·®À» È®º¸Çß´õ¶óµµ »ðÀÔÁ¡ÀÌ ±Ý¹æ ¹è¿­ ³¡¿¡ À̸£°Ô µÈ´Ù. ±×·¡¼­ óÀ½°ú ³¡À» ÀÎÀ§ÀûÀ¸·Î ¿¬°áÇÏ¿© ¿øÇüÀ¸·Î ¸¸µé¾î Á÷¼±ÀÇ ±â¾ï °ø°£À» Àç»ç¿ëÇØ¾ß ÇÏ´Â ºÒÆíÇÔÀÌ ÀÖ´Ù. »Ó¸¸ ¾Æ´Ï¶ó ¿øÇü ±¸Á¶ÀÌ´Ù º¸´Ï °¡µæÂù °æ¿ì¿Í ºó °æ¿ì°¡ Àß ±¸ºÐµÇÁö ¾Ê¾Æ ÇÑÄ­À» ¹ö¸®°Å³ª º°µµÀÇ Ç÷¡±×¸¦ µµÀÔÇÏ´Â ±â¹ýµµ µ¿¿øµÇ¾î¾ß ÇÑ´Ù.

¹è¿­ ´ë½Å ¿¬°á ¸®½ºÆ®·Î ±¸ÇöÇϸé ÀÌ·± ¿©·¯ °¡Áö ºÒÆíÇÑ Á¡À» ÇØ°áÇÒ ¼ö Àִµ¥ ¹è¿­À̳ª ¿¬°á ¸®½ºÆ®³ª µ¿ÀÏÇÑ Å¸ÀÔÀÇ ÁýÇÕÀ» ´Ù·ê ¼ö ÀÖÀ¸¹Ç·Î ¿¬°á ¸®½ºÆ®·Îµµ Å¥¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¾Õ¿¡¼­ ¸¸µç ¹è¿­ Å¥¿Í ºñ½ÁÇÏ°Ô µ¿ÀÛÇÏ´Â ¿¬°á ¸®½ºÆ®·Î ¸¸µç Å¥ÀÌ´Ù.

 

¿¹ Á¦ : LinkedQueue

#include <Turboc.h>

 

struct Node

{

     int value;

     Node *prev;

     Node *next;

};

Node *head;

 

void InitQueue()

{

     head=(Node *)malloc(sizeof(Node));

     head->prev=NULL;

     head->next=NULL;

}

 

void Insert(int data)

{

     Node *New;

     Node *tail;

 

     for (tail=head;tail->next;tail=tail->next) {;}

 

     New=(Node *)malloc(sizeof(Node));

     New->value=data;

 

     New->next=NULL;

     New->prev=tail;

     tail->next=New;

}

 

int Delete()

{

     int data;

     Node *Target;

 

     Target=head->next;

     if (Target==NULL) {

          return -1;

     }

     data=Target->value;

     head->next=Target->next;

     if (head->next) {

          head->next->prev=head;

     }

     free(Target);

     return data;

}

 

void FreeQueue()

{

     while (Delete()!=-1) {;}

 

     free(head);

     head=NULL;

}

 

void main()

{

     int i;

 

     InitQueue();

     for (i=0;i<100;i++) {

          Insert(i);

     }

     for (i=0;i<100;i++) {

          printf("%d  ",Delete());

     }

     FreeQueue();

}

 

ÀÌÁß ¿¬°á ¸®½ºÆ®¸¦ »ç¿ëÇߴµ¥ 100°³ÀÇ ÀڷḦ ³Ö¾ú´Ù°¡ »© º¸¾Ò´Ù. ¿¬°á ¸®½ºÆ®´Â µ¥ÀÌÅ͸¦ »ðÀÔÇÒ ¶§ ³ëµå¸¦ µ¿ÀûÀ¸·Î ÇÒ´çÇØ¼­ µÚ¿¡ µ¡ºÙÀÏ ¼ö ÀÖÀ¸¹Ç·Î ÀÌ·ÐÀûÀ¸·Î ¸Þ¸ð¸® ÇѰè±îÁö Å¥ÀÇ Å©±â¸¦ ´Ã¸± ¼ö ÀÖ´Ù. µû¶ó¼­ Å¥°¡ °¡µæÂ÷´Â ¿À¹öÇ÷ο찡 ¹ß»ýÇÏÁö ¾ÊÀ¸¸ç óÀ½ºÎÅÍ Å¥ÀÇ Å©±â¸¦ ¹Ì¸® Á¤ÇÒ Çʿ䵵 ¾ø´Ù. ¶ÇÇÑ ³ëµå°¡ ¸Þ¸ð¸®ÀÇ ÀÓÀÇ À§Ä¡¿¡ »ý¼ºµÇ¾ú´Ù°¡µµ ¾ðÁ¦µçÁö ÆÄ±«µÉ ¼ö ÀÖÀ¸¹Ç·Î ¿øÇüÀ¸·Î ¸¸µéÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù.

tail ÂÊ¿¡¼­´Â Ç×»ó »õ·Î ³ëµå¸¦ ÇÒ´çÇØ¼­ µ¡ºÙÀ̰í headÂÊ¿¡¼­´Â Ç×»ó ³ëµå¸¦ »èÁ¦Çϱ⸸ ÇÑ´Ù. ¹è¿­·Î ¸¸µç Å¥°¡ °íÁ¤µÈ Å©±â¸¦ °¡Áö´Â ¿øÇü ±â¾ï °ø°£À» ´Ù¶÷Áãó·³ ºù±Û ºù±Û µ¹¾Æ´Ù´Ï´Â ²ÃÀ̶ó°í ÇÑ´Ù¸é ¿¬°á ¸®½ºÆ®·Î ¸¸µç Å¥´Â ºó ¸Þ¸ð¸® °ø°£À» ¹ìó·³ ±¸ºÒ ±¸ºÒ ±â¾î´Ù´Ï´Â ¸ð¾ç¿¡ ºñÀ¯ÇÒ ¼ö ÀÖ´Ù. ¿¬°á ¸®½ºÆ®¸¦ ¾µ ¶§ ¿À¹öÇ÷οì´Â ¹ß»ýÇÏÁö ¾ÊÁö¸¸ Å¥°¡ ºó »óÅ´ ÀÖÀ» ¼ö ÀÖÀ¸¹Ç·Î ÀÌ °æ¿ìÀÇ ¿¡·¯ 󸮴 »ý·«ÇÒ ¼ö ¾ø´Ù.

Å¥¸¦ ¸¸µé ¶§´Â ¿¬°á ¸®½ºÆ®°¡ ¹è¿­¿¡ ºñÇØ¼­ È®½ÇÈ÷ ¾²±â ÆíÇÏ´Ù. ±×·¯³ª »ðÀÔ, »èÁ¦°¡ ´Ü¼øÈ÷ head, tailÀ» ¿Å±â´Â Á¤µµ°¡ ¾Æ´Ï¶ó ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í ¸µÅ©¸¦ Á¶ÀÛÇÏ´Â ¹ø°Å·Î¿î °úÁ¤À» °ÅÃÄ¾ß ÇϹǷΠ¼Óµµ»óÀ¸·Î´Â ¾à°£ÀÇ ºÒÀÌÀÍÀÌ ÀÖ´Ù. ±×¸®°í Å¥°¡ ¾ÆÁÖ ÀÛÀ» ¶§´Â ²À ÇÊ¿äÇѸ¸Å­ÀÇ ³ëµå¸¸ »ý¼ºÇϹǷΠ¹è¿­¿¡ ºñÇØ ¸Þ¸ð¸® ¼Ò¸ð·®ÀÌ ÀûÁö¸¸ ÀÏÁ¤ ±Ô¸ð ÀÌ»óÀ¸·Î Ä¿Áö¸é µ¿Àû ÇÒ´çµÈ ³ëµå¿Í ¸µÅ© Á¤º¸·Î ÀÎÇØ ¿ÀÈ÷·Á ¹è¿­º¸´Ù ´õ ¸¹ÀÌ ¸Þ¸ð¸®¸¦ ¼Ò¸ðÇϱ⵵ ÇÑ´Ù.

¿À¹öÇ÷ο츦 °ÆÁ¤ÇÏÁö ¾Ê¾Æµµ µÈ´Ù´Â °ÍÀº ÀåÁ¡À̱â´Â ÇÏÁö¸¸ ¶§·Î´Â À̰ÍÀÌ ´õ À§ÇèÇÒ ¼öµµ ÀÖ´Ù. ÇÁ·Î±×·¥¿¡ ³í¸®ÀûÀÎ ¿¡·¯°¡ ÀÖÀ» °æ¿ì ½Ã½ºÅÛÀÇ Àü ¸Þ¸ð¸®¸¦ ´Ù ±î¸ÔÀ» ¶§±îÁö ÇÒ´çÀ» ÇØ ´î °ÍÀ̹ǷΠÂ÷¶ó¸® ¿À¹öÇ÷ο찡 ¹ß»ýÇÏ´Â °ÍÀÌ ´õ ³ªÀ»Áöµµ ¸ð¸¥´Ù. »ç½Ç Å¥¸¦ »ç¿ëÇÏ´Â ½ÇÁ¦ ¿¹µµ ¹«ÇÑ´ëÀÇ Å¥¸¦ ¿ä±¸ÇÏÁö´Â ¾Ê±â ¶§¹®¿¡ ¶§·Î´Â ¿À¹öÇ÷ο찡 ÇÊ¿äÇϱ⵵ ÇÏ´Ù.