¾Õ¿¡¼ ÀÛ¼ºÇÑ ¿¹Á¦¿¡¼ º¸¾Ò´Ù½ÃÇÇ ¹è¿µµ ¸Þ¸ð¸®¸¦ Á¶ÀÛÇϸé Áß°£¿¡ »ðÀÔ, »èÁ¦°¡ °¡´ÉÇÏ¿© Å©±â°¡ °¡º¯ÀûÀÎ Á¤º¸¸¦ ´Ù·ê ¼ö ÀÖ´Ù. ±×·¯³ª »õ·Î¿î ¿ä¼Ò°¡ »ðÀԵȴ٠ÇÏ´õ¶óµµ ¹è¿ÀÇ Å©±â°¡ ÀÚµ¿À¸·Î ´Ã¾î³ª´Â °ÍÀº ¾Æ´Ï¹Ç·Î ¹Ì¸® ¼±¾ðÇÑ Å©±â ÀÌ»óÀÇ ¿ä¼Ò¸¦ Ãß°¡ÇÒ ¼ö´Â ¾ø´Ù. ¾Õ ¿¹Á¦ÀÇ ar ¹è¿Àº Å©±â 16À¸·Î ¼±¾ðµÇ¾úÀ¸¹Ç·Î ÃÖ´ë 15°³ÀÇ ¹®ÀÚ¸¸À» ÀúÀåÇÒ ¼ö ÀÖÀ» »ÓÀÌ´Ù. ¼³»ç ¹è¿À» µ¿ÀûÀ¸·Î ÇÒ´çÇÑ´Ù ÇÏ´õ¶óµµ ÇÒ´çÇÒ ¶§ ÇÊ¿äÇÑ Å©±â¸¦ ÁöÁ¤ÇØ¾ß ÇϹǷΠ¹è¿ÀÇ Å©±â´Â ¾ðÁ¦³ª À¯ÇÑÇÏ´Ù.
C¾ð¾î´Â Áß±Þ ¾ð¾î¶ó´Â Ư¼º»ó ¹è¿ÀÇ ¹üÀ§¸¦ ÀüÇô Á¡°ËÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹è¿À» ³Ë³ËÇÑ Å©±â·Î ¼±¾ðÇÏ´Â °Í¸¸À¸·Î´Â ÃæºÐÇÏÁö ¾Ê´Ù. ±Ùº»ÀûÀÎ ¹®Á¦´Â ¹è¿ÀÌ ÀÛÀº °ÍÀÌ ¾Æ´Ï¶ó ÇÊ¿äÇÑ Å©±â¸¦ ¹Ì¸® ¿¹ÃøÇÒ ¼ö ¾ø´Ù´Â µ¥ ÀÖÀ¸¹Ç·Î ½ÅÃ༺ ÀÖ´Â °ü¸®°¡ ÇÊ¿äÇÏ´Ù. Å©±â°¡ °¡º¯ÀûÀÎ Á¤º¸´Â ÀÌ·ÐÀûÀ¸·Î ¹«ÇÑ´ë±îÁö ´Ã¾î³¯ ¼ö ÀÖ¾î¾ß Çϸç ÀÌ·± Á¤º¸µéÀ» °ü¸®Çϱâ À§Çؼ´Â ¹è¿µµ Á¤º¸ÀÇ ¾ç¿¡ µû¶ó ½ÇÇàÁß¿¡ È®Àå °¡´ÉÇØ¾ß ÇÑ´Ù. ¹°·Ð ÄÄÇ»ÅÍÀÇ ¸Þ¸ð¸®°¡ À¯ÇÑÇϱ⠶§¹®¿¡ ½ÇÁúÀûÀÎ ¹«ÇÑ ¹è¿Àº ºÒ°¡´ÉÇÏÁö¸¸ ¸Þ¸ð¸®°¡ Çã¶ôÇÏ´Â ÇѱîÁö(=½ÇÁúÀûÀÎ ¹«ÇÑ´ë)´Â Á¤º¸¸¦ ÀúÀåÇÒ ¼ö ÀÖ¾î¾ß ¾ÈÀüÇÏ´Ù.
½ÇÇàÁß¿¡ ÇÊ¿äÇѸ¸Å Å©±â¸¦ ´Ã·È´Ù ÁÙ¿´´Ù ÇÒ ¼ö ÀÖ´Â ¹è¿À» µ¿Àû ¹è¿À̶ó°í ÇÑ´Ù. C¾ð¾î Â÷¿ø¿¡¼ µ¿Àû ¹è¿¿¡ ´ëÇÑ Áö¿øÀº ÀüÇô ¾øÀ¸¹Ç·Î ÀÌ·± ¹è¿Àº Á÷Á¢ ¸¸µé¾î ¾²´Â ¼ö¹Û¿¡ ¾ø´Ù. Âü°í·Î C++·Î ¸¸µç ¶óÀ̺귯¸®(MFC, STL µî)¿¡´Â µ¿Àû ¹è¿ Ŭ·¡½º°¡ Á¦°øµÇ´Âµ¥ ÀÌ·± Ŭ·¡½ºÀÇ ³»ºÎµµ ¿©±â¼ ¸¸µå´Â ¿¹Á¦¿Í °ÅÀÇ µ¿ÀÏÇÑ ¿ø¸®¸¦ »ç¿ëÇÑ´Ù. ±×·¡¼ ÀÌ ÀåÀÇ ¿¹Á¦¸¦ ÀÌÇØÇϸé ÀÌÈÄ °í¼öÁØ ¶óÀ̺귯¸®ÀÇ ³»ºÎµµ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Ù.
µ¿Àû ¹è¿À» ¸¸µå´Â ±âº» ¿ø¸®´Â ÃÖÃÊ Àû´çÇÑ ±æÀÌ·Î Ãʱâ ÇÒ´çÇ쵂 »ðÀԵǴ Á¤º¸°¡ ÇÒ´çµÈ ¸Þ¸ð¸®¾çÀ» ÃʰúÇÒ ¶§ ¹è¿ÀÇ Å©±â¸¦ ´õ ´Ã¸®´Â °ÍÀÌ´Ù. ÇÙ½É ±â¼úÀº ±âÁ¸ÀÇ ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ÀçÇÒ´çÇÏ´Â realloc ÇÔ¼ö¶ó°í ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ ÅëÇØ µ¿Àû ¹è¿À» Å×½ºÆ®ÇØ º¸ÀÚ.
|
¿¹ Á¦ : DynArray |
#include <Turboc.h>
#define ELETYPE int
ELETYPE *ar;
unsigned size;
unsigned num;
unsigned growby;
void InitArray(unsigned asize, unsigned agrowby)
{
size=asize;
growby=agrowby;
num=0;
ar=(ELETYPE *)malloc(size*sizeof(ELETYPE));
}
void Insert(int idx, ELETYPE value)
{
unsigned need;
need=num+1;
if (need > size) {
size=need+growby;
ar=(ELETYPE *)realloc(ar,size*sizeof(ELETYPE));
}
memmove(ar+idx+1,ar+idx,(num-idx)*sizeof(ELETYPE));
ar[idx]=value;
num++;
}
void Delete(int idx)
{
memmove(ar+idx,ar+idx+1,(num-idx-1)*sizeof(ELETYPE));
num--;
}
void Append(ELETYPE value)
{
Insert(num,value);
}
void UnInitArray()
{
free(ar);
}
void DumpArray(char *sMark)
{
unsigned i;
printf("%16s => Å©±â=%02d,°³¼ö=%02d : ",sMark,size,num);
for (i=0;i<num;i++) {
printf("%2d ",ar[i]);
}
printf("\n");
}
void main()
{
int i;
InitArray(10,5);DumpArray("ÃÖÃÊ");
for (i=1;i<=8;i++) Append(i);DumpArray("8°³ Ãß°¡");
Insert(3,10);DumpArray("10 »ðÀÔ");
Insert(3,11);DumpArray("11 »ðÀÔ");
Insert(3,12);DumpArray("12 »ðÀÔ");
Delete(7);DumpArray("¿ä¼Ò 7 »èÁ¦");
UnInitArray();
}
È¿À²ÀûÀÎ ¹è¿ °ü¸®¸¦ À§ÇØ ¾Õ ¿¹Á¦º¸´Ù ¸î °¡Áö ÇÔ¼ö°¡ ´õ Ãß°¡µÇ¾ú´Ù. DumpArray ÇÔ¼ö´Â °á°ú È®ÀÎÀ» À§ÇÑ µµ¿ì¹Ì ÇÔ¼öÀÏ »ÓÀÌ°í ³ª¸ÓÁö´Â µ¿Àû ¹è¿À» °ü¸®ÇÏ´Â ÇÔ¼öÀÌ´Ù. ÀÏ´Ü µ¤¾î³õ°í ½ÇÇàÇØ º¸°í Àß µ¿ÀÛÇÏ´ÂÁö Á¡°ËÇØ º¸ÀÚ.
ÃÖÃÊ => Å©±â=10,°³¼ö=00 :
8°³ Ãß°¡ => Å©±â=10,°³¼ö=08 : 1 2 3 4 5 6 7 8
10 »ðÀÔ => Å©±â=10,°³¼ö=09 : 1 2 3 10 4 5 6 7 8
11 »ðÀÔ => Å©±â=10,°³¼ö=10 : 1 2 3 11 10 4 5 6 7 8
12 »ðÀÔ => Å©±â=16,°³¼ö=11 : 1 2 3 12 11 10 4 5 6 7 8
¿ä¼Ò 7 »èÁ¦ => Å©±â=16,°³¼ö=10 : 1 2 3 12 11 10 4 6 7 8
ÃÖÃÊ ¹è¿Àº Å©±â 10À¸·Î ÃʱâȵǾú°í ·çÇÁ¸¦ µ¹¸ç 8°³ÀÇ °ªÀ» ÀúÀåÇß´Ù. ÀÌ »óÅ¿¡¼ 10, 11, 12¸¦ Â÷·Ê·Î »ðÀÔÇߴµ¥ 10, 11±îÁö´Â ³²Àº µÎ ¿ä¼Ò¿¡ ÀúÀåÇÏ¸é µÇÁö¸¸ 12°¡ »ðÀ﵃ ¶§´Â Ãʱâ ÇÒ´çµÈ 10°³·Î ºÎÁ·ÇϹǷΠÀÌ ¶§ ÀçÇÒ´çµÇ¾î ¹è¿Àº Å©±â 16À¸·Î ´Ã¾î³´Ù. ´õ ¸¹Àº ¿ä¼Ò¸¦ »ðÀÔÇÏ¸é ¹è¿Àº ÀÚµ¿À¸·Î Çʿ䷮À» ÆÇ´ÜÇÏ¿© ´Ã¾î³¯ °ÍÀÌ´Ù. ¾î°¼ ÀÌ·¸°Ô µÇ´ÂÁö Â÷±Ù Â÷±Ù ºÐ¼®ÇØ º¸ÀÚ.
ÀÌ ¿¹Á¦¿¡¼ ¹è¿ÀÇ ½Çü´Â ar Æ÷ÀÎÅÍÀÌ´Ù. int ar[1000]; ÀÌ·± ½ÄÀ¸·Î ¹è¿À» ¼±¾ðÇϸé Å©±â¿Í À§Ä¡°¡ ÄÄÆÄÀÏÇÒ ¶§ È®Á¤µÇ¾î ¹ö¸®¹Ç·Î °¡º¯ÀûÀÎ Å©±â¸¦ ´Ù·ê ¼ö ¾ø´Ù. ±×·¡¼ ÀúÀåÇϰíÀÚ Çϴ ŸÀÔÀÇ Æ÷ÀÎÅ͸¦ ¼±¾ðÇϰí ÀÌ Æ÷ÀÎÅ͸¦ µ¿ÀûÀ¸·Î ÇÒ´çÇØ¾ß ÇÑ´Ù. ELETYPE ¸ÅÅ©·Î´Â ¹è¿ ¿ä¼ÒÀÇ Å¸ÀÔÀε¥ Çʿ信 µû¶ó º¯°æÇÒ ¼ö ÀÖµµ·Ï ¸ÅÅ©·Î »ó¼ö·Î Á¤ÀÇÇß´Ù. ÀÌ ¿¹Á¦´Â °¡Àå ´Ü¼øÇÑ Å¸ÀÔÀÎ Á¤¼ö(int)¸¦ ¹è¿ ¿ä¼Ò·Î »ç¿ëÇßÁö¸¸ ÀÓÀÇÀÇ ¸ðµç ŸÀÔ¿¡ ´ëÇØ¼µµ µ¿Àû ¹è¿À» ¸¸µé ¼ö ÀÖ´Ù.
µ¿Àû ¹è¿Àº ÄÄÆÄÀÏÇÒ ¶§ ±× Å©±â°¡ ¹Ì¸® Á¤ÇØÁöÁö ¾ÊÀ¸¸ç ½ÇÇàÁß¿¡ ¾ðÁ¦µçÁö Å©±â¸¦ º¯°æÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ±×·¡¼ ÇöÀç ¾ó¸¶¸¸Å ÇÒ´çµÇ¾î ÀÖ´ÂÁö ÇÒ´ç Å©±â¸¦ º°µµÀÇ º¯¼ö¿¡ ÀúÀåÇØ µÎ¾î¾ß Çϴµ¥ size º¯¼ö°¡ ¹è¿ÀÇ ÇÒ´ç Å©±â¸¦ ±â¾ïÇÑ´Ù. ¶ÇÇÑ ¹è¿¿¡ ½ÇÁ¦ ÀúÀåµÈ ¿ä¼ÒÀÇ °³¼öµµ Ç×»ó À¯ÁöÇØ¾ß Çϴµ¥ num º¯¼ö°¡ ÀÌ Á¤º¸¸¦ ÀúÀåÇÑ´Ù. ¹è¿ °ü¸® ÇÔ¼öµéÀº ¹è¿¿¡ ¿ä¼Ò¸¦ »ðÀÔÇÒ ¶§ ÀÌ µÎ º¯¼ö°ªÀ» ºñ±³ÇØ º¸°í ÀçÇÒ´çÇÒ ½ÃÁ¡À» ÆÄ¾ÇÇÒ °ÍÀÌ´Ù. growby º¯¼ö´Â ÀçÇÒ´çÇÒ ¶§ÀÇ ¿©À¯ºÐÀ» ÁöÁ¤Çϴµ¥ ÀÌ º¯¼öÀÇ ¿ªÇÒ¿¡ ´ëÇØ¼´Â Àá½Ã ÈÄ µû·Î ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.
¹è¿ÀÇ ½ÇüÀÎ arÀÌ Æ÷ÀÎÅÍ º¯¼öÀ̹ǷΠar¿¡ ¸Þ¸ð¸®°¡ ÇÒ´çµÇ±â Àü±îÁö ¹è¿Àº ½ÇÁ¦·Î Á¸ÀçÇÏÁö ¾Ê´Â´Ù. Æ÷ÀÎÅͰ¡ ½ÇÁúÀûÀÎ ¹è¿ÀÌ µÇ±â À§Çؼ´Â ÀÏ´Ü ¸Þ¸ð¸®¸¦ Ãʱâ ÇÒ´çÇØ¾ß ÇÑ´Ù. InitArray ÇÔ¼ö´Â ¹è¿ °ü¸® º¯¼öÀÇ ÃʱⰪÀ» ¼³Á¤Çϰí ÀÌ ÃʱⰪ´ë·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© ar Æ÷ÀÎÅÍ¿¡ ±× ¹øÁö¸¦ ´ëÀÔÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ¹è¿À» »ç¿ëÇÏ´Â ÁÖü°¡ È£ÃâÇϴµ¥ ÀÌ ¿¹Á¦ÀÇ °æ¿ì main ÇÔ¼öÀÇ ¼±µÎ¿¡¼ È£ÃâÇϰí ÀÖ´Ù.
main¿¡¼ InitArray(10,5) ·Î È£ÃâÇßÀ¸¹Ç·Î ¹è¿ÀÇ Ãʱâ ÇÒ´çÄ¡´Â 10ÀÌ µÇ°í ¿©À¯ºÐÀº 5·Î ¼³Á¤µÈ´Ù. InitArray ÇÔ¼ö´Â Àü´Þ¹ÞÀº Àμö·Î °ü·Ã º¯¼ö¸¦ ÃʱâÈÇϰí ar¿¡ size °³¼ö¸¸ÅÀÇ ¿ä¼Ò¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù. ¹è¿ÀÌ ÃʱâȵǴ »óȲÀ̹ǷΠ¿ä¼ÒÀÇ °³¼ö numÀº 0À¸·Î Ãʱâ鵃 °ÍÀÌ´Ù. size¿Í numÀº ¸ðµÎ ¹ÙÀÌÆ® ´ÜÀ§°¡ ¾Æ´Ï¶ó ¹è¿ ¿ä¼ÒÀÇ °³¼ö ´ÜÀ§À̹ǷΠÇÊ¿äÇÑ ¸Þ¸ð¸®¾çÀ» ±¸Çϱâ À§Çؼ´Â sizeof(ELETYPE)À» °öÇØ¾ß ÇÑ´Ù.
ÃʱâȰ¡ ¿Ï·áµÇ¸é Á¤¼öÇü º¯¼ö 10°³¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸®°¡ ÇÒ´çµÇ°í ÀÌ ¸Þ¸ð¸®ÀÇ ¼±µÎ¸¦ ar Æ÷ÀÎÅͰ¡ °¡¸®Å°°Ô µÈ´Ù. ±×¸®°í size´Â ÇÒ´ç Å©±â 10À» ±â¾ïÇÏ¸ç ¾ÆÁ÷ ¹è¿¿¡ °ªÀÌ ÀúÀåµÇÁö ¾Ê¾ÒÀ¸¹Ç·Î numÀº 0ÀÌ´Ù. ÀÌ »óÅ¿¡¼ arÀº Å©±â 10ÀÇ Á¤¼öÇü ¹è¿°ú °°¾ÆÁö¸ç 10°³ÀÇ Á¤¼ö°ªÀ» ±â¾ïÇÒ ¼ö ÀÖ´Ù. main¿¡¼´Â 1~8±îÁö 8°³ÀÇ Á¤¼ö¸¦ Ãß°¡ÇßÀ¸¸ç ÀÌ ¶§ÀÇ ar ¹è¿À» ±×¸²À¸·Î ±×·Á º¸¸é ´ÙÀ½°ú °°´Ù.

ÃÑ 10°³ÀÇ ¿ä¼Ò¸¦ ±â¾ïÇÒ ¼ö ÀÖÀ¸¸ç 8°³¸¦ ÀúÀåÇßÀ¸¹Ç·Î ¾ÆÁ÷ µÎ °³ÀÇ ¿©À¯°¡ ³²¾Æ ÀÖ´Â »óȲÀÌ´Ù. ¹°·Ð ÀÌ ³²Àº Ä¿¡´Â ¾²·¹±â°ªÀÌ µé¾î ÀÖÀ» °ÍÀÌ´Ù. ¹è¿À» ´Ù »ç¿ëÇÑ ÈÄ¿¡´Â UnInitArray ÇÔ¼ö¸¦ È£ÃâÇÏ¿© »ç¿ëÇÏ´ø ¸Þ¸ð¸®¸¦ ÇØÁ¦Çϴµ¥ free ÇÔ¼ö·Î ar¿¡ µ¿ÀûÇÒ´çÇÑ ¸Þ¸ð¸®¸¸ ȸ¼öÇÏ¸é µÈ´Ù. main ÇÔ¼öÀÇ ³¡¿¡¼ UnInitArray¸¦ È£ÃâÇϰí ÀÖ´Ù.
1~8±îÁö Á¤¼ö¸¦ Ãß°¡ÇÑ ÈÄ 10, 11, 12¸¦ ¿ä¼Ò 3ÀÇ À§Ä¡¿¡ ¼ø¼´ë·Î »ðÀÔÇϴµ¥ 10, 11±îÁö »ðÀԵǸé arÀº ²Ë Âù »óŰ¡ µÈ´Ù. ÀÌ »óÅ¿¡¼ 12¸¦ ´õ »ðÀÔÇÏ·Á¸é ±â¾ï °ø°£ÀÌ ºÎÁ·ÇϹǷΠ¹è¿ÀÇ Å©±â¸¦ ´Ã·Á ÀçÇÒ´çÇØ¾ß ÇÑ´Ù. ¹è¿ÀÇ Å©±â°¡ ´Ã¾î³ª´Â °æ¿ì´Â Insert ÇÔ¼ö¿¡¼ ¿ä¼Ò¸¦ Ãß°¡ÇÒ ¶§ »ÓÀ̹ǷΠÀÌ ÇÔ¼öÀÇ ¼±µÎ¿¡¼¸¸ ¹è¿ Å©±â¸¦ Á¡°ËÇÏ¸é µÈ´Ù.
ÀçÇÒ´çÇÒ Á¶°ÇÀº ¾ÆÁÖ »ó½ÄÀûÀÌ´Ù. Insert°¡ È£ÃâµÇ¾úÀ» ¶§ ÇÊ¿äÇÑ ¹è¿ Å©±â´Â ÇöÀç ¿ä¼Ò °³¼öÀÎ num¿¡ Ãß°¡µÉ Çϳª¸¦ ´õÇØ num+1À̸ç ÀÌ °ªÀ» need º¯¼ö¿¡ ´ëÀÔÇß´Ù. ¿øÇÑ´Ù¸é ¿©·¯ °³¸¦ ÇѲ¨¹ø¿¡ »ðÀÔÇÏ´Â °Íµµ ¹°·Ð °¡´ÉÇÏ´Ù. need°¡ ÇÒ´çµÈ Å©±âÀÎ sizeº¸´Ù ´õ Ŭ ¶§, ±¸Ã¼ÀûÀ¸·Î ¿¹¸¦ µéÀÚ¸é 10ÀÇ Å©±â·Î ÇÒ´çµÈ »óÅ¿¡¼ 11°³ÀÇ ¿ä¼Ò¸¦ ÀúÀåÇϰíÀÚ ÇÒ ¶§, ÀÌ ¶§°¡ ¹Ù·Î ¹è¿ÀÇ Å©±â¸¦ ´Ã¸± ¶§ÀÌ´Ù.

ÇöÀç Å©±â°¡ ºÎÁ·ÇÏ´Ù´Â ÆÇ´ÜÀÌ ³»·ÁÁ³À¸¹Ç·Î »õ·Î¿î Å©±â¸¦ °è»êÇ쵂 ÀÏ´Ü need ÀÌ»ó µÇ¾î¾ß ÇÏ°í ¿©±â¿¡ ¾à°£ÀÇ ¿©À¯ºÐ growby¸¦ ´õÇß´Ù. size´Â 16ÀÌ µÇ¸ç ÀÌ Å©±â´ë·Î realloc ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ar ¹è¿À» ÀçÇÒ´çÇÑ´Ù. realloc ÇÔ¼ö´Â ar ¹è¿À» »õ·Î¿î Å©±â·Î ÀçÇÒ´çÇϸç ÇÊ¿äÇÒ °æ¿ì ¹øÁö¸¦ ¿Å°Ü ±âÁ¸ ¸Þ¸ð¸®ÀÇ °ªÀ» º¹»çÇØ ÁÖ±â±îÁö ÇϹǷΠÀÌ ÇÔ¼ö¸¸ È£ÃâÇϸé arÀº ³»¿ëÀ» À¯ÁöÇÑ Ã¤·Î ÁöÁ¤ÇÑ Å©±â¸¸Å ´Ã¾î³ª°Ô µÈ´Ù. ¸¸¾à need°¡ sizeº¸´Ù ´õ ÀÛ´Ù¸é, Áï ¾ÆÁ÷ ¿©À¯ºÐÀÌ ³²¾Æ ÀÖ´Ù¸é ÀçÇÒ´ç¾øÀÌ ±âÁ¸ÀÇ ¹æ¹ý´ë·Î »ðÀÔÇÑ´Ù.
¹è¿À» ÀçÇÒ´çÇÒ ¶§´Â ¾î´À Á¤µµÀÇ ¿©À¯ºÐÀ» ÁÖ´Â °ÍÀÌ È¿À²»ó À¯¸®ÇÏ´Ù. »ðÀÔÀº º¸Åë ¿¬¼ÓÀûÀ¸·Î ÀϾ¹Ç·Î ¸Þ¸ð¸®°¡ ºÎÁ·Çؼ Å©±â¸¦ ´Ã·Á¾ß ÇÑ´Ù¸é Á¶¸¸°£ ¸Þ¸ð¸®°¡ ´Ù½Ã ºÎÁ·ÇØÁú È®·üÀÌ ¾ÆÁÖ ³ô´Ù. need¸¸Å ÇÊ¿äÇØÁ³À» ¶§ need¸¸Å¸¸ ÀçÇÒ´çÇϸé ÀÏ´ÜÀº »ðÀÔ °¡´ÉÇÏÁö¸¸ Àá½Ã ÈÄ ´Ù½Ã ÀçÇÒ´çÇØ¾ß ÇÒ °ÍÀÌ´Ù. realloc ÇÔ¼ö´Â Æí¸®Çϱâ´Â ÇÏÁö¸¸ ¹øÁö°¡ ¹Ù²ð °æ¿ì ±²ÀåÈ÷ ´À¸®¸ç ƯÈ÷ ¹è¿ÀÇ Å©±â°¡ Ŭ¼ö·Ï ¼Óµµ»óÀÇ ºÒÀÌÀÍÀÌ ½ÉÇϱ⠶§¹®¿¡ °¡±ÞÀûÀ̸é È£Ãâ ȸ¼ö¸¦ ÁÙ¿©¾ß ÇÑ´Ù. ±×·¡¼ ÀÌ¿Õ ÀçÇÒ´çÀ» ÇÒ ¶§ ¿©À¯ºÐÀ» ÁÖ¾î ´ÙÀ½ ¹ø ºÎÁ·ÇÑ »óȲÀ» ÃÖ´ëÇÑ ´ÊÃß´Â °ÍÀÌ ÁÁ´Ù.
µ¿Àû ¹è¿Àº ÀÌ·± ¸ñÀûÀ¸·Î growby¶ó´Â º¯¼ö¸¦ Á¤ÀÇÇϰí ÀçÇÒ´çÇÒ ¶§ need¿¡ ÀÌ °ªÀ» ´õÇÑ Å©±â·Î ¹è¿À» ´Ã¸°´Ù. ¿©À¯ºÐÀº ¾îµð±îÁö³ª ¿©À¯¸¦ µÎ±â À§ÇÑ °ªÀ̹ǷΠÀÌ °ªÀÌ 0ÀÌ´õ¶óµµ µ¿Àû ¹è¿Àº Á¦´ë·Î µ¿ÀÛÇϰÚÁö¸¸ ¼º´ÉÀÌ ¶³¾îÁø´Ù. ±×·¸´Ù°í ÇØ¼ ¿©À¯ºÐÀ» Áö³ªÄ¡°Ô Å©°Ô ÁÖ¸é ³²´Â ¸Þ¸ð¸®°¡ ¸¹¾ÆÁ® °ø°£ È¿À²ÀÌ ¶³¾îÁø´Ù. Çʿ信 µû¶ó Àû´çÇÑ ¾çÀ» ÁÖ´Â °ÍÀÌ ÁÁÀ¸¸ç ±×·¡¼ InitArray ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ °³¹ßÀÚ°¡ °áÁ¤ÇÒ ¼ö ÀÖµµ·Ï ÇØ µÎ¾ú´Ù.
¿¹Á¦¿¡¼´Â ÀçÇÒ´çÀÌ »¡¸® ÀϾµµ·Ï Çϱâ À§ÇØ ÃʱⰪ, ¿©À¯ºÐÀ» 10, 5·Î ÁÖ¾úÁö¸¸ ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼´Â ¹è¿ÀÇ »ðÀÔ, »èÁ¦ ºóµµ¿¡ µû¶ó ÃʱⰪ°ú ¿©À¯ºÐÀ» Àû´çÇÑ Å©±â·Î ¼±ÅÃÇØ¾ß ÇÑ´Ù. 100, 50 Á¤µµ¸é ´ëü·Î ¾µ¸¸ÇÑ ¼º´ÉÀ» º¸ÀÏ °ÍÀ̸ç ÀÚ·áÀÇ ¾çÀÌ ¸¹°í »ðÀÔµµ ºó¹øÇÏ´Ù¸é 1000, 500 Á¤µµ·Î ÃæºÐÇÑ °ªÀ» ÁÖ¾î ¼º´ÉÀÇ Çâ»óÀ» ²ÒÇÒ ¼ö ÀÖ´Ù. Áï InitArrayÀÇ ÀμöµéÀº ¹è¿ÀÇ ¼º´É ÆÄ¶ó¹ÌÅÍÀÌ´Ù.
±× ¿Ü ³ª¸ÓÁö ÇÔ¼öµéÀº ¾î¶² º¯È°¡ »ý°å´ÂÁö µ¿Àû ÇÒ´çÀ» ÇÏÁö ¾Ê´Â ¾ÕÀÇ ¿¹Á¦¿Í ºñ±³ÇØ º¸ÀÚ. Insert ÇÔ¼ö¿¡´Â ¹è¿ Å©±â Á¡°Ë°ú ÀçÇÒ´ç¹®ÀÌ Ãß°¡µÇ¾ú°í ¹è¿ ¿ä¼Ò¸¦ »ðÀÔÇÏ´Â ÄÚµå´Â ¾ÕÀÇ ¿¹Á¦¿Í °ÅÀÇ ºñ½ÁÇÏ´Ù. ´Ù¸¸ memmove ÇÔ¼öÀÇ À̵¿ ±æÀ̰¡ Á¶±Ý ´Þ¶óÁ³´Ù. ¹è¿¿¡ ±â¾ïµÇ´Â °ªÀÌ ¹®ÀÚ¿ÀÌ ¾Æ´Ï¹Ç·Î ³Î Á¾·á ¹®ÀÚ¸¦ À̵¿ ±æÀÌ¿¡ Æ÷ÇÔ½Ãų Çʿ䰡 ¾øÀ¸¸ç ¹®ÀÚÇü¿¡ ´ëÇÑ ¹è¿ÀÌ ¾Æ´Ñ ÀÓÀÇ Å¸ÀÔ¿¡ ´ëÇÑ ¹è¿À̹ǷΠsizeof(ELETYPE)À» °öÇØ¾ß ÇÑ´Ù.
¹®ÀÚ¿À̳ª Æ÷ÀÎÅÍ´Â ³¡ Ç¥½Ä¿¡ »ç¿ëÇÒ ¼ö Àִ ƯÀ̰ªÀÌ ÀÖÁö¸¸ Á¤¼öÇüÀ̳ª ½Ç¼öÇü¿¡´Â ÀÌ·± ¸ñÀûÀ¸·Î »ç¿ëÇÒ ¼ö Àִ ƯÀ̰ªÀÌ µû·Î ¾ø´Ù. ±×·¡¼ ¹è¿¿¡ ÀúÀåµÈ ¿ä¼ÒÀÇ ½ÇÁ¦ °³¼ö¸¦ ÀúÀåÇÏ´Â numÀ̶ó´Â º°µµÀÇ º¯¼ö°¡ ÇÊ¿äÇÑ °ÍÀÌ´Ù.
Delete ÇÔ¼öµµ ¸¶Âù°¡Áö·Î À̵¿ ±æÀ̸¦ °è»êÇÏ´Â ½Ä¸¸ ´Þ¶óÁ³À¸¸ç ³í¸®´Â µ¿ÀÏÇÏ´Ù. ¸¸¾à ¹è¿ ¿ä¼Ò°¡ ´Ù·® »èÁ¦µÇ¾î Áö³ªÄ¡°Ô ³²´Â ¸Þ¸ð¸®°¡ ¸¹´Ù¸é ¹è¿ Å©±â¸¦ ÁÙÀÌ´Â °Íµµ °¡´ÉÇÏ´Ù. ÀÌ °æ¿ì Delete¿¡ ÇöÀç ÇÒ´ç Å©±â¿Í ¿ä¼Ò °³¼ö¸¦ ºñ±³ÇÏ¿© ÀÏÁ¤ ±âÁØ ÀÌÇÏÀÏ ¶§, ¿¹¸¦ µé¾î numÀÌ sizeÀÇ Àý¹Ýµµ ¾ÈµÉ ¶§ size¸¦ ÁÙÀÌ´Â Äڵ带 ÀÛ¼ºÇÏ¸é µÈ´Ù. ±×·¯³ª ´Ã¾î³ ¹è¿À» ±»ÀÌ ÁÙ¿©¾ß ÇÏ´Â °æ¿ì´Â ±ØÈ÷ µå¹°±â ¶§¹®¿¡ ÀÌ ÄÚµå´Â ÀÛ¼ºÇÏÁö ¾Ê¾ÒÀ¸¸ç Çö½ÇÀûÀ¸·Î º°·Î È¿¿ë¼ºÀÌ ¾ø´Ù. Append ÇÔ¼ö´Â ¾ÕÀÇ ¿¹Á¦¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù.
ÀÌ»óÀ¸·Î ½ÇÇàÁß¿¡ Å©±â¸¦ º¯°æÇÒ ¼ö ÀÖ´Â µ¿Àû ¹è¿À» ¸¸µé¾î º¸°í °£´ÜÇÏ°Ô ºÐ¼®ÇØ º¸¾Ò´Ù. ÀÌ ¿¹Á¦´Â ¿Ïº®ÇÏ°Ô µ¿ÀÛÇÏÁö¸¸ ¿¹Á¦·Î¼ÀÇ °£°á¼ºÀ» Áß¿ä½ÃÇÏ´Ù º¸´Ï ¸î °¡Áö ¸¶À½¿¡ µéÁö ¾Ê´Â ¸éÀÌ ÀÖ´Ù. ¿ì¼± ¹è¿ °ü¸®¸¦ À§ÇØ Àü¿ªº¯¼ö°¡ ÇÊ¿äÇϰí ÀÌ º¯¼öµéÀ» °ü¸®ÇÏ´Â º°µµÀÇ ÇÔ¼ö±îÁö ÀÖ¾î ÀçȰ¿ëÇϱⰡ ¹ø°Å·Î¿î ÆíÀÌ´Ù. ±×·¡¼ ¿©·¯ °³ÀÇ µ¿Àû ¹è¿À» µ¿½Ã¿¡ »ç¿ëÇÒ ¼ö ¾ø´Ù. InitArrayµµ ¼öµ¿À¸·Î È£ÃâÇØ¾ß ÇÏ°í ´Ù »ç¿ëÇÑ ÈÄ UnInitArray¸¦ È£ÃâÇÏ¿© ¹è¿À» ÇØÁ¦ÇÏ´Â °Íµµ Àؾ ¾ÈµÈ´Ù.
Æí¸®ÇÏ°í ¾ÈÀüÇÑ »ç¿ëÀ» À§ÇØ Á» ´õ Çü½Ä¼ºÀ» °®Ãâ Çʿ䰡 Àִµ¥ ÀÌ·² ¶§ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù·Î C++ÀÇ Å¬·¡½ºÀÌ´Ù. ¹è¿ °ü¸® º¯¼ö¿Í °ü·Ã ÇÔ¼öµéÀ» Ŭ·¡½º·Î ¹¾î ³õÀ¸¸é °´Ã¼¸¦ ¼±¾ðÇÏ´Â °Í¸¸À¸·Î µ¿Àû ¹è¿À» ½±°Ô »ý¼ºÇÏ°í »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ÀÚ½ÅÀÌ ÇÊ¿ä¾ø¾îÁ³À» ¶§ ¸Þ¸ð¸®¸¦ ÀÚµ¿À¸·Î Á¤¸®Çϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. CArray ar; ar.Insert(), ar.Delete() ½ÄÀ¸·Î Æí¸®ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ¹è¿ÀÇ ´ë»ó ŸÀÔÀ» ELETYPEÀ̶ó´Â ¸ÅÅ©·Î·Î ¹Ù²Ü ¼ö´Â ÀÖÁö¸¸ µ¿½Ã¿¡ ¿©·¯ ŸÀÔ¿¡ ´ëÇÑ µ¿Àû ¹è¿À» ¸¸µé ¼ö´Â ¾ø´Ù. ÀÌ ¹®Á¦´Â C++ÀÇ ÅÛÇø´À¸·Î ÇØ°áÇÒ ¼ö ÀÖ´Ù.
3ºÎ¿¡¼´Â Ŭ·¡½º·Î µ¿Àû ¹è¿ ŸÀÔÀ» ¸¸µé¾î º¼ °ÍÀ̰í ÀÌ Å¬·¡½º¸¦ ÅÛÇø´À¸·Î ¸¸µé¾î ÀϹÝÀûÀΠŸÀÔ¿¡ ´ëÇØ ¹ü¿ëÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ½Ç½ÀÇÒ °ÍÀÌ´Ù. ¶ÇÇÑ È°¿ë¼ºÀ» ³ôÀ̱â À§ÇØ °Ë»ö, º¹¼ö »ðÀÔ, ¹è¿³¢¸®ÀÇ º´ÇÕ µî Á» ´õ ¸¹Àº ±â´ÉµéÀ» Ãß°¡ÇØ º¸µµ·Ï ÇÏÀÚ. ¿©±â¼´Â C ¼öÁØ¿¡¼ µ¿Àû ¹è¿À» ÀÛ¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼¸¸ Á¤¸®ÇÏ°í ³Ñ¾î°¡±â·Î ÇÑ´Ù.