Implement removePersonFromList function to delete a person node from the linked list; update documentation in users.h
This commit is contained in:
@@ -1,6 +0,0 @@
|
|||||||
#ifndef __FILE_OPERATIONS_H__
|
|
||||||
#define __FILE_OPERATIONS_H__
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -111,5 +111,16 @@ int addPersonToList(node_t **_head, char *_name, char *_surname, uint32_t _depar
|
|||||||
*/
|
*/
|
||||||
int addTimeEvent(node_t *_person);
|
int addTimeEvent(node_t *_person);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Removes a person node from a linked list.
|
||||||
|
*
|
||||||
|
* This function removes the node pointed to by _person from the linked list
|
||||||
|
* whose head is pointed to by _head. Both parameters are double pointers to
|
||||||
|
* allow modification of the head pointer and the node pointer.
|
||||||
|
*
|
||||||
|
* @param _head Double pointer to the head of the linked list.
|
||||||
|
* @param _person Double pointer to the node representing the person to remove.
|
||||||
|
* @return int Returns 0 on success, or a negative value on failure.
|
||||||
|
*/
|
||||||
int removePersonFromList(node_t **_head, node_t **_person);
|
int removePersonFromList(node_t **_head, node_t **_person);
|
||||||
#endif
|
#endif
|
||||||
+32
@@ -159,4 +159,36 @@ int addTimeEvent(
|
|||||||
_person->user.last_time_event = current_time;
|
_person->user.last_time_event = current_time;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int removePersonFromList(node_t **_head, node_t **_person)
|
||||||
|
{
|
||||||
|
if (_head == NULL || *_head == NULL || _person == NULL || *_person == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
node_t *current = *_head;
|
||||||
|
node_t *prev = NULL;
|
||||||
|
|
||||||
|
while (current != NULL)
|
||||||
|
{
|
||||||
|
if (current == *_person)
|
||||||
|
{
|
||||||
|
if (prev == NULL)
|
||||||
|
{
|
||||||
|
*_head = current->next;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
prev->next = current->next;
|
||||||
|
}
|
||||||
|
free(current->user.name);
|
||||||
|
free(current->user.surname);
|
||||||
|
free(current);
|
||||||
|
*_person = NULL;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
prev = current;
|
||||||
|
current = current->next;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user