rendered paste body#include <stdio.h>#include <stdlib.h>struct list { char *data; struct list *next;};typedef struct list list;list *new_list(char *data) { list *ret = malloc(sizeof(list)); ret->data = data; ret->next = NULL; return ret;}/** Returns the last element in the list. */list *list_last(list *l) { list *ret = l; while (ret->next != NULL) { ret = ret->next; } return ret;}/* function pointers!!!!!!! */void list_foreach(list *l, int (*func)(list*)) { list *current = l; while (current != NULL) { (*func)(current); current = current->next; }}int list_size(list *l) { int size = 1; list *current = l; while (current->next != NULL) { size++; current = current->next; } return size;}void list_add(list *l, char *data) { list *last = list_last(l); last->next = new_list(data);}list *list_seek(list *l, int pos) { list *ret = l; int i; for (i = 0; i < pos - 1; i++) { ret = ret->next; } return ret;}char *list_get(list *l, int pos) { return list_seek(l, pos)->data;}void list_insert_after(list *l, int pos, char *data) { list *cur = list_seek(l, pos); list *n = new_list(data); n->next = cur->next; cur->next = n;}int list_find(list *l, char *find) { list *current = l; int pos = 1; while (current != NULL) { if (strcmp(current->data, find) == 0) { return pos; } current = current->next; pos++; } return -1;}void list_set(list *l, int pos, char *to) { list_seek(l, pos)->data = to;}void list_print(list *l) { printf("=== List ===\n"); int i = 1; list *cur = l; while (cur != NULL) { printf("#%i: %s\n", i++, cur->data); cur = cur->next; } printf("Total size: %i \n", list_size(l));}void list_free(list *l) { int i = list_size(l) - 1; while (i > 0) { list *cur = list_seek(l, i); free(cur->next); cur->next = NULL; i--; } free(l);}void printlol(list *l) { printf("AAA: %s\n", l->data);}int main() { list *test = new_list("Hey!! (THIS WILL BE changed!!)"); list_add(test, "LOL"); list_add(test, "LOOKAT ME!22"); list_add(test, ";D"); list_print(test); list_set(test, 1, "First element!!!!"); list_insert_after(test, 1, "second element!!"); printf("%s \n ALSO ;D is at %i \n", list_get(test, 3), list_find(test, ";D")); list_foreach(test, &printlol); list_free(test); return 0;}