#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) *last = dst; if ((*last)->next == NULL) (*last)->next = dst, dst->next = *last; else { dst->next = (*last)->next; (*last)->next = dst; } } void delete (node **last) { node *prev = NULL; if ((*last)->next == NULL) goto cleanup; prev = *last; while (prev->next != *last) prev = prev->next; if (prev->next->next == prev) prev->next = NULL; else 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); }