컴공 일기174
게시글 주소: https://dev.orbi.kr/00058259577
처음부터 끝까지 보지 않고, 스스로 짠 Singly Linked List.
흔히, C 중급이론의 기본기라고 불리지요.
#include <stdio.h>
#include <stdlib.h>
typedef struct tagNode
{
int data;
struct tagNode* NextNode;
}Node;
Node* SLL_CreateNode(int NewData)
{
Node* NewNode = (Node*)malloc(sizeof(Node));
NewNode->data = NewData;
NewNode->NextNode = NULL;
return NewNode;
}
Node* SLL_DestroyNode(Node* Node)
{
free(Node);
}
void SLL_AppendNode(Node** Head, Node* NewNode)
{
if ((*Head) == NULL)
{
* Head = NewNode;
}
else
{
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)->NextNode;
(*Head)->NextNode = NewHead;
}
}
void SLL_RemoveNode(Node** Head, Node* Remove)
{
if ((*Head) == NULL)
{
(*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;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.

너무 흥분돼요 ㅠㅠ
저도 얼른 컴퓨터 공부를 하고싶네요! 오늘도 글 감사합니다
행복한 여행이 되길 빕니다 :)
ㅓㅜㅑ