65 lines
1020 B
C
65 lines
1020 B
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
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);
|
|
}
|