#include "LinkedList.h" /* ³ëµå »ý¼º */ Node* SLL_CreateNode(ElementType NewData) { Node* NewNode = (Node*)malloc(sizeof(Node)); NewNode->Data = NewData; /* µ¥ÀÌÅ͸¦ ÀúÀåÇÑ´Ù. */ NewNode->NextNode = NULL; /* ´ÙÀ½ ³ëµå¿¡ ´ëÇÑ Æ÷ÀÎÅÍ´Â NULL·Î ÃʱâÈ­ ÇÑ´Ù. */ return NewNode;/* ³ëµåÀÇ ÁÖ¼Ò¸¦ ¹ÝȯÇÑ´Ù. */ } /* ³ëµå ¼Ò¸ê */ void SLL_DestroyNode(Node* Node) { free(Node); } /* ³ëµå Ãß°¡ */ void SLL_AppendNode(Node** Head, Node* NewNode) { /* Çìµå ³ëµå°¡ NULLÀ̶ó¸é »õ·Î¿î ³ëµå°¡ Head */ if ( (*Head) == NULL ) { *Head = NewNode; } else { /* Å×ÀÏÀ» ã¾Æ NewNode¸¦ ¿¬°áÇÑ´Ù. */ Node* Tail = (*Head); while ( Tail->NextNode != NULL ) { Tail = Tail->NextNode; } Tail->NextNode = NewNode; } } /* ³ëµå »ðÀÔ */ void SLL_InsertAfter(Node* Current, Node* NewNode) { NewNode->NextNode = Current->NextNode; Current->NextNode = NewNode; } void SLL_InsertNewHead(Node** Head, Node* NewHead) { if ( Head == NULL ) { (*Head) = NewHead; } else { NewHead->NextNode = (*Head); (*Head) = NewHead; } } /* ³ëµå Á¦°Å */ void SLL_RemoveNode(Node** Head, Node* Remove) { if ( *Head == Remove ) { *Head = Remove->NextNode; } else { Node* Current = *Head; while ( Current != NULL && Current->NextNode != Remove ) { Current = Current->NextNode; } if ( Current != NULL ) Current->NextNode = Remove->NextNode; } } /* ³ëµå Ž»ö */ Node* SLL_GetNodeAt(Node* Head, int Location) { Node* Current = Head; while ( Current != NULL && (--Location) >= 0) { Current = Current->NextNode; } return Current; } /* ³ëµå ¼ö ¼¼±â */ int SLL_GetNodeCount(Node* Head) { int Count = 0; Node* Current = Head; while ( Current != NULL ) { Current = Current->NextNode; Count++; } return Count; }