Files
dslab/4.c
Amneesh Singh 1b9c98247f exp 4: cleanup
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2022-12-28 04:28:47 +05:30

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);
}