http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=411 [º¹»ç]
¡Ú¡Ú¡Ú À̺κÐÀÌ Àǹ®½º·¯¿îµ¥¿ä.. ¹°·Ð Á¦°¡ À߸ø ÀÌÇØÇÏ°í Àִ°ŰÚÁÒ? ^^; ¾Æ¹«Æ°.. Áö±ÝºÎÅÍ ¼³¸íµå¸®°Ú½À´Ï´Ù..
1. temp °ø°£»ý¼º
2. stack °ø°£À» temp°ø°£¿¡ Àӽà º¹»ç
3. stack ÇØÁ¦
4. count °ªÀ» 1 ´õÇÔ
5. stack °ø°£À» [(count+1) * sizeof(int)] ¸¸Å »õ·Î »ý¼º
6. stack[0] = data; // »õ·Î ³ÖÀ» data¸¦ stack[0]¿¡ ÀúÀå
7. stack+1À» ÇØÁØ´Ù.
8. count-1À» ÇØÁØ´Ù. ±×·¡¾ß ¿ø·¡ ÀÖ´ø temp°ª¸¸ »õ·Î »ý¼ºµÈ stackÀ¸·Î »ðÀÔ°¡´ÉÇϴϱî.. ¡Ú¡Ú¡Ú Àǹ® : Á¦°¡ »ý°¢ÇÏ°í ÀÖ´Â°Ô ¸Â´ÂÁö¿ä..
int push_stack(int data)
{
int *temp; // stackÀÇ ³»¿ëÀ» Àӽ÷ΠÀúÀåÇϱâ À§ÇÑ Æ÷ÀÎÅÍ
temp = (int *)malloc(count * sizeof(int));
if(temp == NULL) // ¿¹¿Üó¸®
return 0;
memcpy(temp, stack, count * sizeof(int)); // temp·Î stack ¸Þ¸ð¸® (µ¥ÀÌÅÍÀÇ °³¼ö * intÇüÀÇ Å©±â¸¸Å)°ø°£À» º¹»ç
free(stack); // ÇöÀçÀÇ stack ¸Þ¸ð¸® °ø°£À» ÇØÁ¦
count += 1;
stack = (int *)malloc(count * sizeof(int)); // »õ·Î ÇÒ´çµÈ ¸Þ¸ð¸®°ø°£(µ¥ÀÌÅÍÀÇ °³¼ö * intÇüÀÇ Å©±â ¸¸Å)ÀÇ ¸Þ¸ð¸® ÇÒ´ç : »õ·Î¿î µ¥ÀÌÅ͸¦ ³Ö±â À§Çؼ)
if(stack == NULL) // ¿¹¿Üó¸®
return 0;
stack[0] = data; // »õ·Î ³ÖÀ» data¸¦ stack[0]¿¡ ÀúÀå
memcpy(stack+1, temp, (count - 1) * sizeof(int)); // Àӽà ÀúÀåµÇ¾î ÀÖ´ø temp ¸Þ¸ð¸®¸¦ (µ¥ÀÌÅÍÀÇ °³¼ö * intÇüÀÇ Å©±â¸¸Å) stack+1ÀÇ À§Ä¡·Î º¹»ç
¸ÕÀúÀÖ´ø µ¥ÀÌÅÍ¿¡ ¿¬°áÇؼ ÀúÀåÇϱâ À§ÇÑ °ÍÀÏ µí..
³·ÀºÁÖ¼Ò(stack)------>³ôÀºÁÖ¼Ò(stack+1)
stack[0]..................stack[1] ¡Ú¡Ú¡Ú Á¦°¡ »ý°¢ÇÏ°í ÀÖ´Â°Ô ¸Â´ÂÁö¿ä?
¡Ú¡Ú¡Ú°ªÀÌ ÀúÀå µÇ´Â ¼ø¼°¡ Çò°¥¸³´Ï´Ù.
½ºÅÃÀº Last In First Out ÀÌ µÇ´Ï±î »õ·Î¿î °ª(stack[0])ÀÌ ¸Ç ¾Æ·¡(³ôÀº
ÁÖ¼Ò)¿¡ ÀúÀåµÇ¾ß Çϴ°Š¾Æ´Ñ°¡¿ä? ±×·±µ¥ »õ·Î¿î °ª(stack[0])ÀÌ ¸Ç À§
¿¡ ÀúÀåµÇ¾î ¹ö¸®¸é °ªÀÌ ÀúÀåµÉ¶§¸¶´Ù »õ·Î¿î °ªÀÌ ¸Ç À§·Î °¡°Ô µÇ¾î¹ö¸®
Àݾƿä..
±×·¸°Ô µÇ¸é
³·ÀºÁÖ¼Ò-------------------------------------------> µ¥ÀÌÅÍ µé¾î°¡´Â ¼ø¼(³ôÀºÁÖ¼Ò)
³ªÁß¿¡ µé¾î°£ °ª(stack[0])......................................................¸ÕÀú µé¾î°£ °ª
»õ·Î ÀԷµǴ stack[0]Àº Ç×»ó ¸Ç À§¿¡.. ¤Ð.¤Ð
ÀÌ°Ô ¸Â´Â°Ç°¡¿ä?
¿ø·¡´Â
-------------------------------------------> µ¥ÀÌÅÍ µé¾î°¡´Â ¼ø¼
³ªÁß¿¡ µé¾î°£ °ª....................................................¸ÕÀúµé¾î°£ °ª(stack[0])
ÀÌ°Ô Á¤»ó ¾Æ´Ñ°¡¿ä?
free(temp); // Àӽðø°£À» ÇØÁ¦
return 1;
}
´äº¯ ºÎŹµå¸³´Ï´Ù~¢ª *^^*
|
Hit : 3221 Date : 2004/02/09 08:09
|