You should look at all of the in-class examples, the labs, and the projects for examples of linked list methods to write. Ones that could be written are listed below: int is_empty(llist *lst); int contains(llist *lst,void* v); void add_head(llist *lst,void* v); void add_tail(llist *lst,void* v); void* remove_head(llist *lst); void* remove_tail(llist *lst); void* remove_node(llist *lst,int index); // remove and return the value stored at the index'th void* remove_node_val(llist *lst,void *val); // remove the node matching val node void* return_value(llist *lst,int index); // return value stored in the index'th node void* find(llist *lst,void* v); int do_all(llist *lst,int (*f)(void*)); // sum all of the values in the linked list int findmax(llist *lst,int (*comp)(void*,void*)); // return the max value in the list int findmin(llist *lst,int (*comp)(void*,void*)); // return the max value in the list int count_occurrences(llist *lst,void* v, int (*comp)(void*,void*)); // count how many of m in list int count_less_than(llist *lst,void* v, int (*comp)(void*,void*)); // count how many are less than m in the list You should look at all of the in-class examples, the labs, and the projects for examples of tree methods to write. Ones that could be written are trees below. Know how to write efficient versions if you are given a tree, bst, or heap. int is_empty(tree *rt); int contains(tree *rt,void* v); int height(tree *rt); int num_nodes(tree *rt); void insert(bst *rt,void* v, int (*comp)(void*,void*)); void remove(bst *rt,void* v, int (*comp)(void*,void*)); void insert(heap *rt,void* v, int (*comp)(void*,void*)); void* remove(bst *rt, void* v); void* remove(heap *rt); void* find(tree *rt,void* v); void* find(bst *rt,void* v); void* find(heap *rt,void* v); int do_all(tree *rt,int (*f)(void*)); // sum all of the values in the linked tree int findmax(tree *rt,int (*comp)(void*,void*)); // return the max value in the tree int findmin(tree *rt,int (*comp)(void*,void*)); // return the max value in the tree int findmax(bst *rt,int (*comp)(void*,void*)); // return the max value in the tree int findmin(bst *rt,int (*comp)(void*,void*)); // return the max value in the tree int findmax(heap *rt,int (*comp)(void*,void*)); // return the max value in the tree int findmin(heap *rt,int (*comp)(void*,void*)); // return the max value in the tree int count_occurrences(tree *rt,void* v, int (*comp)(void*,void*)); // count how many of m in tree int count_less_than(tree *rt,void* v, int (*comp)(void*,void*)); // count how many are less than m in the tree int count_occurrences(bst *rt,void* v, int (*comp)(void*,void*)); // count how many of m in tree int count_less_than(bst *rt,void* v, int (*comp)(void*,void*)); // count how many are less than m in the tree int count_occurrences(heap *rt,void* v, int (*comp)(void*,void*)); // count how many of m in tree int count_less_than(heap *rt,void* v, int (*comp)(void*,void*)); // count how many are less than m in the tree