#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++; } retur Count; }