✨컴공주✨ [1052682] · MS 2021 · 쪽지

2022-09-03 20:06:40
조회수 5,362

컴공 일기174

게시글 주소: https://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)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.