ÇÁ·Î±×·¡¹Ö

 3198, 1/160 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   h2spice
   (ÀڷᱸÁ¶ ) SingleList Áß°£ Node »ðÀÔ ÇÔ¼ö ±¸ÇöÀÌ À߾ȵǿä!!!

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2839 [º¹»ç]


³ëµå »ý¼º, ¿¬°á
ºÎºÐÃâ·Â, Àüü Ãâ·ÂÀº ÀÌ»ó¾øÀÌ ±¸ÇöÀÌ µÇ¾ú´Âµ¥

Áß°£»ðÀÔ ÀÌ À߾ȵ˴ϴÙ

¿¡·¯´Â ¾È³ª°í¿ä. ½ÇÇàÀºµÇ´Âµ¥

¿¹¸¦ µé¾î

Áß°£»ðÀÔ ¸Þ´º¿¡ µé¾î°¡¸é
¸î¹øÂ° ³ëµå¿¡ ³ÖÀ»²«Áö ¹¯°ÔµÇ´Âµ¥

3 À̶ó°í ÀÔ·ÂÇϸé

3¹øÂ° ³ëµå·Î À̵¿ÇÕ´Ï´Ù

3¹øÂ° ³ëµå¿¡ »õ·Î¿î ³ëµå »ý¼ºÇؼ­

±× ³ëµå¿¡ µ¥ÀÌÅ͸¦ ÀԷ¹޽À´Ï´Ù ( ex : 100)

±×¸®°í ÀÌ »õ·Î¿î ³ëµå¸¦ ÀÌÀü³ëµå¿Í ´ÙÀ½³ëµå¿¡ ¿¬°áÇϰí

Àüü Ãâ·ÂÇØº¸¸é Ãß°¡ °¡ ¾ÈµË´Ï´Ù...

¤Ð¤Ð

¹Ø¿¡ ÄÚµå ÀÖ½À´Ï´Ù Çѹø ºÁÁÖ¼¼¿ä ¤Ð¤Ð ÁÖ¼®À» µÚ´Ê°Ô ´Þ¾Æ³ù´Âµ¥ ,,,,,,, ±ÞÇÑ°Ô ´Ü´Ù°í

ÁöÀûÇØÁÖ½Ã¸é °¨»çÇϰڽÀ´Ï´Ù.







#include <stdio.h>
#include <stdlib.h>

typedef int ElementType;

typedef struct node{                //³ëµå ±¸Á¶Ã¼ ¼±¾ð (µ¥ÀÌÅÍ Çʵå , ´ÙÀ½ ³ëµå Æ÷ÀÎÅÍ Çʵå)
        
        ElementType Data;
        node * NextNode;
}Node;


Node* Create_Node(ElementType a){                // ³ëµå »ý¼º ÇÔ¼ö ( Èü¿µ¿ª¿¡ »ý¼º¸¸ ÇÑ ÈÄ¿¡ Append_Node ÇÔ¼ö·Î ³ëµå ¿¬°á)
        Node* NewNode = (Node*)malloc(sizeof(Node));
        NewNode -> Data = a;
        NewNode -> NextNode = NULL;

        return NewNode;
}

void Append_Node(Node** Head, Node* NewNode)        //»ý¼ºµÈ ³ëµå ¸¦ ¿¬°á ÇÏ´Â ÇÔ¼ö /
{
        if( (*Head) == NULL)                                                // ¸Å°³ º¯¼ö¸¦ 2°³ °¡Áö´Âµ¥ ¸ÞÀÎÇÔ¼ö ³»¿¡ º¯¼ö Node* List, ¿Í Node* NewNode °¡ ÀÖÀ½
        {                                                                                        // Node* List ´Â Çìµå°¡ µÊ .  ¿¹¸¦ µé¾î Append_Node(&List , Create_Node(1)) »ç¿ë
                
                (*Head)=NewNode;                                                 // Head °¡ NULL À϶§ Head °¡ NewNode ¸¦ °¡¸£Å°°ÔÇÔ.
        }
        else
        {
                Node* Tail = (*Head);
                        while(Tail->NextNode != NULL)                // Head °¡ NULL ÀÌ ¾Æ´Ò¶§ Àӽ÷ΠTail ³ëµå »ý¼º ÈÄ Head  ÁÖ¼Ò°ªÀ» ÁÜ
                        {
                                Tail = Tail -> NextNode ;                // ³ëµå¿¡ ¼øÂ÷ Á¢±ÙÇÏ¿©  NULL ÀÌ µÉ¶§±îÁö À̵¿
                        }
                        Tail->NextNode = NewNode;                        // ´ÙÀ½ ³ëµå¸¦ °¡¸£Å°´Â Æ÷ÀÎÅͰ¡ NULL Àΰæ¿ì »ý¼ºµÈ NewNode ¸¦ °¡¸£Å°°Ô ÇÔ
        }
}

void menu (void)                                                                        // ¸Þ´º¸¦ »ý¼º
{
        printf("=================================\n");
        printf("@@@ Node Ãß°¡ (1) @@@@@@@@@@@@@@@\n");
        printf("@@@ Node Áß°£»ðÀÔ (2) @@@@@@@@@@@\n");
        printf("@@@ Node ÁöÁ¤Ãâ·Â (3) @@@@@@@@@@@\n");
        printf("@@@ Node ÀüüÃâ·Â (4) @@@@@@@@@@@\n");
        printf("=================================\n");
}
        
void booboon(Node** Head, int count)                // ºÎºÐ ³ëµå Á¢±Ù ÇÏ¿© ±× µ¥ÀÌÅ͸¦ Ãâ·Â Çϱâ À§ÇÑ ÇÔ¼ö
{        
        int i = 0;                // for ¹®À» µ¹¸®±â À§ÇÑ º¯¼ö
        Node* NewNode;        
        NewNode = (*Head);
        for(i=1 ; i != count ; i++)                                // »ç¿ëÀÚ°¡ Á¢±ÙÇÏ·Á´Â X¹øÂ° ³ëµå¸¦ Á¢±Ù (for¹® 3¹øµ¹¸®¸é 3¹øÂ°³ëµå Á¢±Ù)
        {
                NewNode= NewNode->NextNode ;
        }
        printf("       %d", NewNode->Data);                // ÇØ´ç ³ëµå µ¥ÀÌÅÍ Ãâ·Â
        printf("\n\n");
}

void Insert_Node (Node** Head , Node* NewNode, int count)                // Áß°£ ³ëµå¸¦ »ðÀÔÇϱâ À§ÇÑ ÇÔ¼ö !!!! ( À̺κп¡¼­ ¸·Èû!!!)
{
        int i = 0;                                //Æ÷¹® µ¹¸®±â À§ÇÑ º¯¼ö
        Node* Find;                                                
        //Node* Temp = NULL;
        Find = (*Head);                                // Find ¿¡ Head ÁÖ¼Ò°ª ´ëÀÔ
        for(i=1 ; i != count ; i++)                // ÇØ´ç ³ëµå Á¢±Ù
        {
                Find = Find ->NextNode ;
        }
        
        NewNode = Find->NextNode;                // º»·¡ ³ëµå°¡ °¡¸£Å°°í ÀÖ´Â ´ÙÀ½³ëµå¸¦ »ý¼ºµÈ NewNode °¡ °¡¸£Å°°Ô ÇÔ
        //Temp = NewNode;
        
        Find->NextNode = NewNode;                // º»·¡ ³ëµå°¡ °¡¸£±â°íÀÖ´Â ´ÙÀ½³ëµå¸¦  »ý¼ºµÈ NewNode ·Î ¹Ù²Þ
}

void main (void)
{
        int Num=0;                        // ¸Þ´º ¸¦ ¼±ÅÃÇϱâ À§ÇÑ º¯¼ö
        int NNUM=0;                        // Ãß°¡ ÇÒ ³ëµå °³¼ö¸¦ ÀԷ¹ޱâÀ§ÇÑ º¯¼ö
        int input=0;                //»ý¼ºµÈ ³ëµåÀÇ µ¥ÀÌÅ͸¦ ÀԷ¹ޱâ À§ÇÑ º¯¼ö
        int i=0;                        //for ¹® À» µ¹¸®±âÀ§ ÇÑ º¯¼ö
        Node* List = NULL;
        Node* NewNode = NULL;
        while(1)
        {
        menu();

        scanf("%d",&Num);

        switch (Num){
        
                case 1 :
                        {        
                                printf(" ³ëµå¸¦ ¸î°³ Ãß°¡ÇÒ±î¿ä? \n");
                                scanf("%d", &NNUM);
                                printf("\n\n");
                                printf("³ëµå Ãß°¡Áß .........\n");

                                for(i=1 ; i<= NNUM ; i++)
                                {
                                        printf("»õ·Î¿î ³ëµå ÀÔ´Ï´Ù. µ¥ÀÌÅ͸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä \n",i);
                                        scanf("%d",&input);
                                        Append_Node(&List , Create_Node(input));
                                        printf("³ëµå Ãß°¡ ¿Ï·á. \n", i);
                                        printf("\n\n");
                                }
                                break;
                        }

                case 2 :
                        {        int count = 0 ;
                                int input = 0;

                                printf("¸î¹øÂ° ³ëµå¿¡ »ðÀÔ ÇϽðڽÀ´Ï±î? \n");
                                scanf("%d",&count);
                                printf("Áß°£ »ðÀÔ ÇÒ »õ·Î¿î ³ëµå ÀÔ´Ï´Ù. µ¥ÀÌÅ͸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä. \n");
                                scanf("%d", &input);
                                Insert_Node(&List, Create_Node(input), count);
                                printf("³ëµå »ðÀÔ ¿Ï·á µÇ¾ú½À´Ï´Ù \n\n");


                                break;
                        }



                case 3 :
                        {        
                                int count = 0;
                                printf(" ¸î¹øÂ° ³ëµå¿¡ Á¢±Ù ÇϽðڽÀ´Ï±î ? \n");
                                scanf("%d",&count );
                                printf(" %d¹øÂ° ³ëµå Data : \n ", count);
                                booboon(&List, count);

                                break;
                        }


                case 4 :
                        {
                                printf(" ³ëµå¸¦ Ãâ·Â ÇÕ´Ï´Ù. \n");
                                printf(" ÇöÀç ³ëµå´Â : \n");
                                for(NewNode = List ; NewNode != NULL; NewNode = NewNode->NextNode)
                                {
                                        printf("        %d        \n",NewNode->Data);
                        
                                }
                                printf("\n");
                        }
        }
        }


        
}


        


  Hit : 8307     Date : 2011/01/06 04:47



    
sonogongx Insert_Node ÇÔ¼ö¿¡¼­
NewNode = Find->NextNode; <-- ÀÌ ºÎºÐÀÌ Àß ¸ø µÈ°Í °°Àºµ¥¿ä...

NewNode->NextNode = Find->NextNode; ÀÌ·¸°Ô µÇ¾ß µÉ°Í °°½À´Ï´Ù.
2011/01/06  
gamja Insert_NodeÇÔ¼ö ¼Ò½º´ë·Î¶ó¸é »õ·Î Ãß°¡ÇÑ ³ëµå´Â ¿¹¸¦µé¾î

3¹øÂ° À§Ä¡¿¡ ³Ö´Â´Ù°í °¡Á¤Çϸé,
°á°ú¹°Àº ¾Æ·¡Ã³·³ µÉÅÙµ¥¿ä
1¹ø³ëµå -> 2¹ø³ëµå -> º»·¡³ëµå(3¹ø³ëµå) -> »ý¼ºµÈ ³ëµå -> 4¹ø³ëµå

¼Ò½º´ë·Î¶ó¸é 3¹øÂ° À§Ä¡¿¡ Ãß°¡µÇÁö¾Ê°í 4¹øÂ° À§Ä¡¿¡ Ãß°¡µÉ²®´Ï´Ù. Ãß°¡ÇÏ·Á´Â À§Ä¡ ´ÙÀ½³ëµå¿¡ ÀúÀåµÇÁö ¾Ê¾Ò³ª È®ÀÎÇØº¸¼¼¿ä.
2011/01/08