pl-sem/sem7/tail-rec.c
2023-08-18 01:08:53 +03:00

40 lines
672 B
C

/* tail-rec.c */
#include <inttypes.h>
#include <malloc.h>
#include <stddef.h>
#include <stdio.h>
void print_size(size_t i) { printf("%zu" , i); }
struct list {
int64_t elem;
struct list *next;
};
struct list *c(int64_t head, struct list *tail) {
struct list *h = malloc(sizeof(struct list));
h->elem = head;
h->next = tail;
return h;
}
size_t list_length(struct list const *l) {
size_t i = 0;
while(l != NULL) i++, l = l->next;
return i;
}
int main(int argc, char **argv) {
const size_t len = 1024 * 1024;
struct list *lst = NULL;
for( size_t i = 0; i < len; i++) {
lst = c(i, lst);
}
print_size(list_length(lst));
return 0;
}