Circle List (Node)
#include <stdio.h> #include <stdlib.h> typedef struct LinkNode { int data; struct ListNode *link; }ListNode; ListNode * insert_first(ListNode *head, int item) { if (head == NULL) { head = (ListNode*)malloc(sizeof(ListNode)); head->data = item; head->link = head; } else { ListNode *p = (ListNode*)malloc(sizeof(ListNode)); p->data = item; p->link = head->link; head->link = p; } return head; } ListNode * insert_last(ListNode *head, int item) { ListNode *p = (ListNode*)malloc(sizeof(ListNode)); p->data = item; p->link = head->link; head->link = p; head = p; return head; } ListNode * delete_first(ListNode *head) { if (head == NULL) { printf("리스트가 비었습니다"); return NULL; } ListNode *p; p = head->link; head->link = p->link; free(p); return head; } int print_list(ListNode *head) { if (head == NULL) { printf("리스트가 비었습니다"); return NULL; } ListNode *p=head->link; while (p!= head) { printf("%d ", p->data); p = p->link; } printf("%d\n", p->data); } int main() { ListNode *list = NULL; list = insert_first(list, 10); print_list(list); list = insert_first(list, 20); print_list(list); list = insert_first(list, 30); print_list(list); list = insert_last(list, 40); print_list(list); list = insert_last(list, 50); print_list(list); list = delete_first(list); print_list(list); return 0; }