Implement UUID generation in addPersonToList and ensure uniqueness across existing nodes

This commit is contained in:
2025-04-22 21:16:25 +02:00
parent 53867532c0
commit d60fcba0c8
2 changed files with 37 additions and 2 deletions
+10
View File
@@ -26,6 +26,16 @@ typedef struct node
struct node *next; struct node *next;
} node_t; } node_t;
/**
* @brief Generates a unique identifier (UUID) for a new node in the linked list.
*
* This function traverses the linked list starting from the given head node
* and generates a unique 16-bit unsigned integer identifier that does not
* conflict with any existing UUIDs in the list.
*
* @param _head Pointer to the head node of the linked list.
* @return A 16-bit unsigned integer representing the generated UUID.
*/
uint16_t generateUUID(node_t *_head); uint16_t generateUUID(node_t *_head);
uint16_t searchUUIDByName(node_t *_head); uint16_t searchUUIDByName(node_t *_head);
+27 -2
View File
@@ -9,11 +9,35 @@
#include <termios.h> #include <termios.h>
#include <string.h> #include <string.h>
int addPersonToList( uint16_t generateUUID
(
node_t *_head
)
{
uint16_t uuid = rand() % (UINT16_MAX - 1 + 1) + 1;
node_t *current = _head;
while (current != NULL)
{
if (current->user.uuid == uuid)
{
uuid = rand() % (UINT16_MAX - 1 + 1) + 1;
current = _head;
}
else
{
current = current->next;
}
}
return uuid;
}
int addPersonToList
(
node_t **_head, node_t **_head,
char *_name, char *_name,
char *_surname, char *_surname,
uint32_t _department) uint32_t _department
)
{ {
node_t *new_node = (node_t *)malloc(sizeof(node_t)); node_t *new_node = (node_t *)malloc(sizeof(node_t));
if (new_node == NULL) if (new_node == NULL)
@@ -26,6 +50,7 @@ int addPersonToList(
return 0; return 0;
} }
new_node->user.uuid = generateUUID(*_head);
new_node->user.name = (char *)malloc(strlen(_name) + 1); new_node->user.name = (char *)malloc(strlen(_name) + 1);
new_node->user.surname = (char *)malloc(strlen(_surname) + 1); new_node->user.surname = (char *)malloc(strlen(_surname) + 1);