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;
}
±×·¯³ª, À̵¿Àº ¹è¿¿¡ À־ ū ÀÏ ½Ã°£ ÀÇ °ÍÀÎÁö ºô¸®°í ÀÛ¾÷À̸ç, ÇÑÆí ¸®½ºÆ®ÀÎ Æ÷ÀÎÅͰ¡ »õ·Î ºÙÀÌ°í »ÓÀ¸·Î ÇØ°áµÈ´Ù. µû¶ó¼, ÀÚü Á¶Á÷È Å½»ö¿¡¼´Â, µ¥ Ÿ´Â ¸®½ºÆ®¿¡ ÀÇÇØ º¸°ü À¯ÁöµÈ´Ù.