- How to use linked lists
- Start to look for the right source of information without too much help
-
0. Print list
- 0-print_listint.c: C function that prints all the elements of a
listint_t
list.- Prototype:
size_t print_listint(const listint_t *h);
- Return: the number of nodes
- You are allowed to use
printf
- Prototype:
- 0-print_listint.c: C function that prints all the elements of a
-
1. List length
- 1-listint_len.c: C function that returns the number of elements in a linked
listint_t
list.- Prototype:
size_t listint_len(const listint_t *h);
- Prototype:
- 1-listint_len.c: C function that returns the number of elements in a linked
-
2. Add node
- 2-add_nodeint.c: C function that adds a new node at the beginning of a
listint_t
list.- Prototype:
listint_t *add_nodeint(listint_t **head, const int n);
- Return: the address of the new element, or
NULL
if it failed
- Prototype:
- 2-add_nodeint.c: C function that adds a new node at the beginning of a
-
3. Add node at the end
- 3-add_nodeint_end.c: C function that adds a new node at the end of a
listint_t
list.- Prototype:
listint_t *add_nodeint_end(listint_t **head, const int n);
- Return: the address of the new element, or
NULL
if it failed
- Prototype:
- 3-add_nodeint_end.c: C function that adds a new node at the end of a
-
4. Free list
- 4-free_listint.c: C function that frees a
listint_t
list- Prototype:
void free_listint(listint_t *head);
- Prototype:
- 4-free_listint.c: C function that frees a
-
5. Free
- 5-free_listint2.c: C function that frees a
listint_t
list.- Prototype:
void free_listint2(listint_t **head);
- The function sets the head to
NULL
- Prototype:
- 5-free_listint2.c: C function that frees a
-
6. Pop
- 6-pop_listint.c: C function that deletes the head node of a
listint_t
linked list, and returns the head node’s data (n).- Prototype:
int pop_listint(listint_t **head);
- if the linked list is empty return
0
- Prototype:
- 6-pop_listint.c: C function that deletes the head node of a
-
7. Get node at index
- 7-get_nodeint.c: C function that returns the nth node of a
listint_t
linked list.- Prototype:
listint_t *get_nodeint_at_index(listint_t *head, unsigned int index);
- where
index
is the index of the node, starting at0
- if the node does not exist, return
NULL
- Prototype:
- 7-get_nodeint.c: C function that returns the nth node of a
-
8. Sum list
- 8-sum_listint.c: C function that returns the sum of all the data (n) of a
listint_t
linked list.- Prototype:
int sum_listint(listint_t *head);
- if the list is empty, return
0
- Prototype:
- 8-sum_listint.c: C function that returns the sum of all the data (n) of a
-
9. Insert
- 9-insert_nodeint.c: C function that inserts a new node at a given position.
- Prototype:
listint_t *insert_nodeint_at_index(listint_t **head, unsigned int idx, int n);
- where
idx
is the index of the list where the new node should be added. Index starts at 0 - Returns: the address of the new node, or
NULL
if it failed - if it is not possible to add the new node at index
idx
, do not add the new node and returnNULL
- Prototype:
- 9-insert_nodeint.c: C function that inserts a new node at a given position.
-
10. Delete at index
- 10-delete_nodeint.c: C function that deletes the node at index
index
of alistint_t
linked list.- Prototype:
int delete_nodeint_at_index(listint_t **head, unsigned int index);
- where
index
is the index of the node that should be deleted. Index starts at0
- Returns:
1
if it succeeded,-1
if it failed
- Prototype:
- 10-delete_nodeint.c: C function that deletes the node at index
-
11. Reverse list
- 100-reverse_listint.c: C function that reverses a
listint_t
linked list.- Prototype:
listint_t *reverse_listint(listint_t **head);
- Returns: a pointer to the first node of the reversed list
- You are not allowed to use more than 1 loop.
- You are not allowed to use
malloc
,free
or arrays - You can only declare a maximum of two variables in your function
- Prototype:
- 100-reverse_listint.c: C function that reverses a
-
12. Print (safe version)
- 101-print_listint_safe.c: C function that prints a
listint_t
linked list.- Prototype:
size_t print_listint_safe(const listint_t *head);
- Returns: the number of nodes in the list
- This function can print lists with a loop
- You should go through the list only once
- If the function fails, exit the program with status
98
- Prototype:
- 101-print_listint_safe.c: C function that prints a
-
13. Free (safe version)
- 102-free_listint_safe.c: C function hat frees a
listint_t
list.- Prototype: size_t free_listint_safe(listint_t **h);
- This function can free lists with a loop
- You should go though the list only once
- Returns: the size of the list that was free’d
- The function sets the
head
toNULL
- 102-free_listint_safe.c: C function hat frees a
-
14. Find the loop
- 103-find_loop.c: C function that finds the loop in a linked list.
- Prototype: listint_t *find_listint_loop(listint_t *head);
- Returns: The address of the node where the loop starts, or NULL if there is no loop
- You are not allowed to use malloc, free or arrays
- You can only declare a maximum of two variables in your function
- 103-find_loop.c: C function that finds the loop in a linked list.