selfSearch ÀÚü Á¶Á÷È Å½»ö
LIST *selfSearch(LIST *list, int target);
typedef struct _list { int key; /* ºñ±³ÀÇ Å°°¡ µÇ´Â Çʵå */ int info; /* ±× ¿ÜÀÇ Çʵå */ struct _list *next; /* ´ÙÀ½ÀÇ ¿ä¼Ò */ } LIST; list (ÀÔ·Â) ¸®½ºÆ®ÀÇ Çì´õ target (ÀÔ·Â) Ž»ö ¸ñÇ¥·Î ÇÏ´Â Å°ÀÇ °ª
¹ß°ßµÇ¾úÀ» °æ¿ì´Â ±× ¿ä¼Ò¿¡ÀÇ Æ÷ÀÎÅÍ. ¹ß°ßµÇÁö ¾Ê¾Ò´Ù °æ¿ì´Â NULL.
LIST *selfSearch(LIST *list, int target) { LIST *head, *prev; if (list == NULL) return NULL; for (prev = head = list; (list = prev->next) ! = NULL; prev = list) if (list->key == target) { prev->next = list->next; list->next = head->next; head->next = list; return list; } return NULL; }
±×·¯³ª, À̵¿Àº ¹è¿¿¡ À־ ū ÀÏ ½Ã°£ ÀÇ °ÍÀÎÁö ºô¸®°í ÀÛ¾÷À̸ç, ÇÑÆí ¸®½ºÆ®ÀÎ Æ÷ÀÎÅÍ°¡ »õ·Î ºÙÀÌ°í »ÓÀ¸·Î ÇØ°áµÈ´Ù. µû¶ó¼, ÀÚü Á¶Á÷È Å½»ö¿¡¼´Â, µ¥ Ÿ´Â ¸®½ºÆ®¿¡ ÀÇÇØ º¸°ü À¯ÁöµÈ´Ù.