¡ºÇÁ·Î±×·¡¹Ö ¾ð¾î °­ÁÂ-C,C++,VC °­Á (go PROG)¡» 1592¹ø Á¦ ¸ñ:[°­ÁÂ] Æ÷ÀÎÅÍ ½ºÅ͵ð [7/8] -½Å°æÈ£ ¿Ã¸°ÀÌ:ÆÄÀÌ»ç¶û(½Å°æÈ£ ) 00/01/27 00:00 ÀÐÀ½:410 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- ¡º¹è¿òÅÍ-°­Á (go SSCS)¡» 32¹ø Á¦ ¸ñ:[°­ÁÂ] Æ÷ÀÎÅÍ ½ºÅ͵ð [7/8] -½Å°æÈ£ ¿Ã¸°ÀÌ:ÆÄÀÌ»ç¶û(½Å°æÈ£ ) 00/01/23 23:36 ÀÐÀ½: 4 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ¡á Æ÷ÀÎÅÍ ½ºÅ͵ð [7] ¡á ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ [990219 ÆÄÀÌ»ç¶û] ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ¡á 7. ¸µÅ©µå ¸®½ºÆ® ¡á ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ¢Ä ´ÜÀÏ ¸µÅ©µå ¸®½ºÆ® ¸µÅ©µå ¸®½ºÆ®(linked-list)´Â ¸®½ºÆ®ÀÇ Çϳª ÀÔ´Ï´Ù. ¸®½ºÆ®¡¦ ¹«¾ðÁö´Â ¾Æ½Ã°ÚÁö¿ä? ¹è¿­ °°Àº °É ¸»ÇÏ´Â °ÅÁö¿ä. ³»¿ëÀÌ ÂÞ¿í ³ª¿­µÇ¾î ÀÖ´Â ÇüŶó °í³ª ÇÒ±î¿ä¡¦ ¸µÅ©µå ¸®½ºÆ®´Â À̸§ ±×´ë·Î ¹«¾ð°¡¿¡ ÀÇÇØ ¿¬°áµÊÀ¸·Î½á ¸® ½ºÆ®¿Í °°Àº ÇüŸ¦ ¶ì´Â ±¸Á¶ ÀÔ´Ï´Ù. ±× ¹«¾ð°¡´Â ¾Æ½Ã´Ù½ÃÇÇ Æ÷ÀÎÅ͸¦ ¸» ÇÏ´Â °ÍÀÌ°ÚÁö¿ä. ÁÖ¼Ò·ÏÀ» Çϳª ¸¸µé¾î º¾½Ã´Ù. °£´ÜÇÑ¡¦ ¿ì¼± Á¤º¸¸¦ ´ãÀ» ±¸Á¶Ã¼¸¦ ¼±¾ðÇØ ¾ß °ÚÁö¿ä? (ÁÖ¼Ò·ÏÀÌ ¾Æ´Ï¶ó ÀüÈ­¹øÈ£ºÎ¶ó°í Çؾ߰ڳ׿ä. ^^) struct people_t { char name[20]; char phone[15]; }; ÀÌ Á¤µµ¸é µÇ°ÚÁö¿ä. ±×·±µ¥ ¿ì¸®°¡ ¸¸µé °ÍÀº ¸µÅ©µå ¸®½ºÆ® ÀÔ´Ï´Ù. Æ÷ÀÎ ÅÍ°¡ µé¾î°¡¾ß°ÚÁö¿ä. struct people_tag { char name[20]; char phone[15]; struct people_tag *next; }; typedef struct people_tag people_t; ¾Æ½Ã´Ù½ÃÇÇ ¸µÅ©µå ¸®½ºÆ®´Â ÀÚ±â ÀÚ½ÅÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍ¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ¿¬°áµÈ ±¸Á¶¸¦ ¸»ÇÏÁö¿ä. °¢°¢À» ³ëµå(node)¶ó°í ÇÕ´Ï´Ù. people_t *head = NULL, *tail = NULL; int count = 0; ¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯ ¡å ¡å ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ name ¦­¦­ ¦­ name ¦­¦­ ¦­ name ¦­ ¦­ name ¦­ ¦­ phone ¦­¦­ ¦­ phone ¦­¦­ ¦­ phone ¦­¡¦¦­ phone ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ *next ¦­¦° ¦­ *next ¦­ ¦­ *next ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¾ÆÁ÷Àº ¾Æ¹«·± Á¤º¸µµ µé¾î°¡Áö ¾Ê¾ÒÀ¸¹Ç·Î head¿Í tailÀº NULL ÀÔ´Ï´Ù. ÀÌ Á¦ ÀÌ ¸®½ºÆ®¿¡ ÇÑ »ç¶÷ÀÇ Á¤º¸¸¦ Ãß°¡ÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé¾î º¾½Ã´Ù. people_t *list_add(char *name, char *phone) { people_t *temp; temp = (people_t *)malloc(sizeof(people_t)); if (temp == NULL) return NULL; // ¸Þ¸ð¸® ÇÒ´ç ¿¡·¯! strcpy(temp->name, name); strcpy(temp->phone, phone); temp->next = NULL; // »õ·Î ÇÒ´çµÈ temp¿¡ ÁÖ¾îÁø Á¤º¸¸¦ ¸ðµÎ ³Ö¾ú½À´Ï´Ù. [¨ç] // ÀÌÁ¦ temp¸¦ ¸®½ºÆ®¿¡ Ãß°¡½ÃÄÑ¾ß ÇÏ°ÚÁö¿ä. if (tail != NULL) tail->next = temp; // tailÀÌ NULLÀÌ ¾Æ´ÑÁö ÆÇ´ÜÇÑ ÀÌÀ¯´Â ¹«¾ùÀϱî¿ä? // tailÀÌ NULLÀÎ ÃʱâÀÇ °æ¿ì¿¡ tail->next¶ó´Â ±¸¹®À» »ç¿ëÇÑ´Ù¸é // ´ç¿¬È÷ ½É°¢ÇÑ ¹®Á¦°¡ ¹ß»ýÇϱ⠶§¹®ÀÌÁö¿ä. if (tail == NULL) head = temp; tail = temp; // Ãʱ⠻óÅÂÀÇ °æ¿ì¿¡ headµµ ¿ª½Ã NULL À̹ǷΠ[¨è] // ¶È°°ÀÌ temp¸¦ ´ëÀÔÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. count++; return temp; // ¸ðµÎ ¼º°øÀûÀ¸·Î ³¡³µÀ» ¶§ ÀÔ´Ï´Ù. } ÀÌ ¸®½ºÆ®ÀÇ Ãʱ⠻óŸ¦ º¼±î¿ä. ¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦²¦¬¦¬¦¬¦° ¡å NULL ¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ ¦­ ¦­ ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ÀÌÁ¦ ù¹ø° °ªÀ» ´ëÀÔÇØ º¸µµ·Ï ÇÏÁö¿ä. list_add("shin", "111-2222"); // óÀ½ ´ëÀÔÇÒ ¶§ ¨ç¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦²¦¬¦¬¦¬¦° ¡å NULL ¦®¦¬¦¬¦¬¦¬¦¬¦¯¢¸¦¯¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ ¦­ ¦­¦­ shin ¦­ ¦­ ¦­ ¦­¦­ 111-2222 ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ ¦­ ¦±¦­ *next ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¨è¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦±¦¬¦¬¦¬¦´ ¦±¦¬¦¬¦¬¦¬¦¯ NULL ¡å ¦®¦¬¦¬¦¬¦¬¦¬¦¯¢¸¦¯¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ ¦­ ¦­¦­ shin ¦­ ¦­ ¦­ ¦­¦­ 111-2222 ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ ¦­ ¦±¦­ *next ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° °á°úÀûÀ¸·Î´Â ´ÙÀ½°ú µ¿ÀÏ ÇÕ´Ï´Ù. (Á¿츦 µÚÁý¾úÀ» »ÓÀÌÁö¿ä) ¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦²¦¬¦¬¦¬¦° ¡å NULL ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ shin ¦­¦­ ¦­ ¦­ ¦­ 111-2222 ¦­¦­ ¦­ ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ´õ ´ëÀÔÇØ º¾½Ã´Ù. list_add("jung", "333-4444"); ¨ç¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦²¦¬¦¬¦¬¦° ¡å NULL ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯¢¸¦¯¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ shin ¦­¦­ ¦­ ¦­ ¦­¦­ jung ¦­ ¦­ 111-2222 ¦­¦­ ¦­ ¦­ ¦­¦­ 333-4444 ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ ¦­ ¦±¦­ *next ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¨è¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦­ ¦±¦³¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯ ¡å ¦­ NULL ¡å ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦­ ¦®¦¬¦¬¦¬¦¬¦¬¦¯¢¸¦¯¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ shin ¦­¦­ ¦­ ¦­ ¦­¦­ jung ¦­ ¦­ 111-2222 ¦­¦­ ¦­ ¦­ ¦­¦­ 333-4444 ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ ¦­ ¦±¦­ *next ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¿ª½Ã ±×¸²À» Á¶±Ý Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°Áö¿ä. ¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦­ ¦±¦¬¦¬¦¬¦¬¦¯ ¡å ¡å NULL ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ shin ¦­¦­ ¦­ jung ¦­¦­ ¦­ ¦­ ¦­ 111-2222 ¦­¦­ ¦­ 333-4444 ¦­¦­ ¦­ ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ *next ¦­¦° ¦­ ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° Çϳª¸¦ ´õ Ãß°¡Çϸé, list_add("cho", "555-6666"); ¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯ ¡å ¡å NULL ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ shin ¦­¦­ ¦­ jung ¦­¦­ ¦­ cho ¦­¦­ ¦­ ¦­ ¦­ 111-2222 ¦­¦­ ¦­ 333-4444 ¦­¦­ ¦­ 555-6666 ¦­¦­ ¦­ ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ *next ¦­¦° ¦­ *next ¦­¦° ¦­ ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ´õ ´ëÀÔÇØ º¼ ÇÊ¿ä´Â ¾ø°ÚÁö¿ä? ^^ ÀÌÁ¦ ƯÁ¤ À§Ä¡ÀÇ ³ëµå¿¡ Á¢±ÙÇÏ´Â ÇÔ¼ö ¸¦ ¸¸µé¾î º¾½Ã´Ù. people_t *list_seek(int number) { int n; people_t *temp = head; if (number >= count) return NULL; for (n = 0; n < number; n++) temp = temp->next; return temp; } list_seek(1)->name°ú °°Àº ¹æ¹ýÀ¸·Îµµ Á¢±ÙÀÌ °¡´ÉÇÏ°ÚÁö¿ä? ¹°·Ð °á°ú°ª ÀÌ NULLÀÎÁö ¾Æ´ÑÁö ºñ±³´Â ÇØ¾ß ÇÏ°ÚÁö¿ä. ÀÌÁ¦ ÇϳªÀÇ ³ëµå¸¦ »èÁ¦ÇÏ´Â ÇÔ ¼ö¸¦ ¸¸µé¾î º¼±î¿ä? void list_delete(people_t *node) { people_t *prev; for (prev = head; prev != tail; prev = prev->next) if (prev->next == node) break; // node·ÎºÎÅÍ Á÷Á¢ ¹Ù·Î ¾ÕÀÇ ³ëµå¸¦ ¾Ë ¹æ¹ýÀÌ ¾øÀ¸¹Ç·Î // óÀ½ºÎÅÍ °Ë»öÀ» ÇÕ´Ï´Ù. // prev°¡ ¹Ù·Î node ¹Ù·Î ÀüÀÇ ³ëµå°¡ µÇ°ÚÁö¿ä. if (node == head) head = node->next; else prev->next = node->next; count--; // ÀÌÁ¦ node´Â ¸®½ºÆ®¿¡¼­ »èÁ¦ µÇ¾ú½À´Ï´Ù. [¨ç] free(node); // ÇÒ´çÇß´ø ¸Þ¸ð¸®µµ ÇØÁ¦ÇØ¾ß ÇÏ°ÚÁö¿ä. [¨è] } list_delete(list_seek(1)); ¨ç¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯ ¡å ¦®¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯ ¡å NULL ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦­ ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦²¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ shin ¦­¦­ ¦­ jung ¦­¦­ ¦­ cho ¦­¦­ ¦­ ¦­ ¦­ 111-2222 ¦­¦­ ¦­ 333-4444 ¦­¦­ ¦­ 555-6666 ¦­¦­ ¦­ ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ *next ¦­¦° ¦­ *next ¦­¦° ¦­ ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¨è¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯ ¡å ¦®¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯ ¡å NULL ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦­ ¦±¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ shin ¦­¦­ ¦­ cho ¦­¦­ ¦­ ¦­ ¦­ 111-2222 ¦­¦­ ¦­ 555-6666 ¦­¦­ ¦­ ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ *next ¦­¦° ¦­ ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° list_delete(list_seek(0)); // »èÁ¦µÇ´Â ³ëµå°¡ head ÀÏ ¶§ ¨ç¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦­ ¦±¦¬¦¬¦¬¦¬¦¯ ¦±¦¬¦¬¦¬¦¬¦¯ ¡å NULL ¦®¦¬¦¬¦¬¦¬¦¬¦¯¦²¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ shin ¦­¦­ ¦­ cho ¦­¦­ ¦­ ¦­ ¦­ 111-2222 ¦­¦­ ¦­ 555-6666 ¦­¦­ ¦­ ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ *next ¦­¦° ¦­ ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¨è¦®¦¬¦¬¦¯¦®¦¬¦¬¦¯ ¦­head¦­¦­tail¦­ ¦±¦¬¦¬¦°¦±¦¬¦¬¦° ¦­ ¦±¦¬¦¬¦¬¦¬¦¯ ¦±¦¬¦¬¦¬¦¬¦¯ ¡å NULL ¦±¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯¦®¢º¦®¦¬¦¬¦¬¦¬¦¬¦¯ ¦­ cho ¦­¦­ ¦­ ¦­ ¦­ 555-6666 ¦­¦­ ¦­ ¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´¦­ ¦²¦¬¦¬¦¬¦¬¦¬¦´ ¦­ *next ¦­¦° ¦­ ¦­ ¦±¦¬¦¬¦¬¦¬¦¬¦° ¦±¦¬¦¬¦¬¦¬¦¬¦° ¿©±â±îÁö Çؼ­ ¸µÅ©µå ¸®½ºÆ®¿¡ Ãß°¡ÇÏ°í Á¢±ÙÇÏ°í »èÁ¦ÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé¾î ºÃ½À´Ï´Ù. ¿øÇÏ´Â À§Ä¡¿¡ Ãß°¡Çϰųª °Ë»öÀ» ÇÏ´Â ÇÔ¼ö´Â Á÷Á¢ ¸¸µé¾î º¸½Ã±â ¹Ù¶ø´Ï´Ù. À§ÀÇ ÇÔ¼öµéÀ» »ç¿ëÇÑ ¿¹Á¦¸¦ Àû½À´Ï´Ù. #include #include #include struct people_tag { char name[20]; char phone[15]; struct people_tag *next; }; typedef struct people_tag people_t; people_t *head = NULL, *tail = NULL; int count = 0; people_t *list_add(char *name, char *phone) { people_t *temp; temp = (people_t *)malloc(sizeof(people_t)); if (temp == NULL) return NULL; strcpy(temp->name, name); strcpy(temp->phone, phone); temp->next = NULL; if (tail != NULL) tail->next = temp; if (tail == NULL) head = temp; tail = temp; count++; return temp; } people_t *list_seek(int number) { int n; people_t *temp = head; if (number >= count) return NULL; for (n = 0; n < number; n++) temp = temp->next; return temp; } void list_delete(people_t *node) { people_t *prev; for (prev = head; prev != tail; prev = prev->next) if (prev->next == node) break; if (node == head) head = node->next; else prev->next = node->next; count--; free(node); } void print_list(void) { int n; for (n = 0; n < count; n++) printf("%d %s %s\n", n + 1, list_seek(n)->name, list_seek(n)->phone); printf("\n"); } void main(void) { list_add("shin", "111-2222"); print_list(); list_add("jung", "333-4444"); print_list(); list_add("cho", "555-6666"); print_list(); list_delete(list_seek(1)); print_list(); list_delete(list_seek(0)); print_list(); list_delete(list_seek(0)); } <°á°ú> 1 shin 111-2222 1 shin 111-2222 2 jung 333-4444 1 shin 111-2222 2 jung 333-4444 3 cho 555-6666 1 shin 111-2222 2 cho 555-6666 1 cho 555-6666 ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ¢Ä ¼Ò½º¿Í ±×¸²À¸·Î µµ¹èÇÑ ½ºÅ͵𿴳׿ä. ´ÙÀ½ ½Ã°£¿¡´Â ÀÌÁß ¸µÅ©µå ¸®½ºÆ® ¿Í ½ºÅÃ, Å¥¸¦ ¾Ë¾Æ º¸°Ú½À´Ï´Ù. ¸¶Áö¸· ½ºÅ͵𰡠µÉµí Çϳ׿ä. ÀÌ»Û ¸»¸¸ ¾²´Â ¼¼»óÀ» ¸¸µé°í ½ÍÀº ÆÄÀÌ°¡¡¦ ^^; ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬