Week 01 Tutorial Questions
Recursion
-
Introductions
- Introduce yourself to the other people in the tutorial class
- Discuss what you learned from COMP1511
- Discuss what parts you're still unsure of
Recursion
For the questions below, use the following data type:
struct node {
int value;
struct node *next;
};
-
Write a recursive function to compute the length of a linked list. It should have this signature:
int listLength(struct node *l) { ... }
-
Write a recursive function to count the number of odd numbers in a linked list. It should have this signature:
int listCountOdds(struct node *l) { ... }
-
Write a recursive functions to check whether a list is sorted in ascending order. It should have this signature:
bool listIsSorted(struct node *l) { ... }
-
Write a recursive function to delete the first instance of a value from a linked list, if it exists. The function should return a pointer to the beginning of the updated list. Use the following interface:
struct node *listDelete(struct node *l, int value) { ... }
-
Recall that an alternative representation of a linked list uses a struct that contains a pointer to the first node of the list:
struct list { struct node *head; };
How would your recursive solutions for the above questions change if the functions took a
struct list
pointer instead of a node pointer? For example:int listLength(struct list *l);