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 |