#include #include typedef struct Node node; struct Node { int collegeid; struct Node *next; }; void insert(node **last, int collegeid) { node *dst = malloc(sizeof(node)); dst->collegeid = collegeid; if (*last == NULL) { dst->next = dst; *last = dst; } else { dst->next = (*last)->next; (*last)->next = dst; } } void delete (node **last) { node *prev = NULL; if ((*last)->next == (*last)) goto cleanup; prev = *last; while (prev->next != *last) prev = prev->next; prev->next = (*last)->next; cleanup: free(*last); *last = prev; } void display(node *last) { node *cur = last; while (cur->next != last) { printf("%d ", cur->next->collegeid); cur = cur->next; } printf("%d\n", last->collegeid); } int main() { node *last = NULL; insert(&last, 1); insert(&last, 4); insert(&last, 99); insert(&last, 1223); display(last); delete (&last); display(last); // free while (last != NULL) delete (&last); }