Implement UUID generation in addPersonToList and ensure uniqueness across existing nodes
This commit is contained in:
@@ -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
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user