Simple Linked List와 유사하지만, 다른 점은 마지막 노드가 첫 번째 노드를 가리키고 있다.





#include <stdio.h>
#include <malloc.h>

typedef struct Node {
    int data;
    struct Node *next;
} Node;

Node *head;

void insertNode(int data)
{
    Node* node;
    Node* newNode = (Node*)malloc(sizeof(Node));

    if (head == NULL) {
        head = newNode;
    }

    node = head;

    newNode->data = data;
    newNode->next = head;

    while (node->next != head) {
        node = node->next;
    }

    node->next = newNode;
}

void deleteNode(int key) {
    Node* node = head->next;
    Node* prevNode = head;

    while (node->data != key && node != head) {
        prevNode = node;
        node = node->next;
    }

    if (node->data == key) {
        prevNode->next = node->next;

        if (node == head) {
            head = node->next;
        }

        free(node);
    }
}

void printList() {
    Node* node = head;

    printf("LinkedList :");
    while (node->next != head) {
        printf(" %d", node->data);
        node = node->next;
    }

    //last node
    printf(" %d", node->data);

    printf("\n");
}

void clear() {
    Node* node = head;
    Node* delNode;
    while (node != head) {
        delNode = node;
        node = node->next;
        free(delNode);
    }

    //head
    free(node);
}

int main()
{
    insertNode(5);
    insertNode(3);
    insertNode(1);
    insertNode(4);
    insertNode(2);
    printList();

    deleteNode(4);
    printList();

    deleteNode(5);
    printList();

    deleteNode(1);
    printList();
   
    clear();

    return 0;
}


* 출처 : https://www.tutorialspoint.com/data_structures_algorithms/

'SW > 자료구조' 카테고리의 다른 글

Circular Queue  (0) 2019.01.06
Queue  (0) 2019.01.06
Stack  (0) 2019.01.06
Linked List 2 - Doubly Linked List  (0) 2019.01.06
Linked List 1 - Simple Linked List  (0) 2018.12.31

+ Recent posts