C – Devolver el puntero del primer elemento en la lista enlazada (cadena de texto)
Mi función debe devolver el puntero del primer elemento en la lista enlazada “String s” después de agregar un carácter.
typedef struct String
{
char cChar; //dato de tipo char almacenado en un nodo
struct String* strNext; //puntero al siguiente nodo de la lista enlazada
}String;
String create ()
{
String* strTemp = NULL;
//asignación de memoria dinámica
strTemp = (String*)malloc(sizeof(String));
//asegurarse de que el carácter devuelto sea nulo después de la creación
strTemp->cChar = '\0';
strTemp->strNext = NULL;
return *strTemp;
}
void concat(String *a, String *b){
if (a->strNext == NULL)
a->strNext = b;
else
concat(a->strNext,b);
}
/**
* @brief Añade un carácter c al final de la cadena String s
*
* @param String s: cadena a manipular
char c: carácter a añadir
* @return String: el puntero del primer elemento en la cadena String s
*/
String add (String s, char c){
String strTemp = NULL;
strTemp = (String*)malloc(sizeof(String));
strTemp->cChar = c;
strTemp->strNext = '\0';
concat(&s, strTemp);
return s; // <-- aquí es donde debería devolver
}
La cadena debe ser una lista enlazada y la función add se llama de la siguiente manera:
add(s1, 'H');
No logro entender las listas enlazadas en C.
davy.ai
Para devolver el puntero del primer elemento en la lista enlazada después de agregar un carácter, debemos modificar la función add para devolver un puntero al primer nodo en la lista enlazada. Así es como debería lucir la función add modificada:
Ten en cuenta que hemos modificado la firma de la función para aceptar un puntero a la lista enlazada existente (s) en lugar de una copia de ella (s1), ya que necesitamos modificar la lista enlazada original.
Además, hemos reemplazado el tipo de retorno con un puntero al primer elemento de la lista enlazada, ya que eso es lo que necesitamos devolver.
Por último, después de agregar el nuevo nodo a la lista enlazada, la recorremos para encontrar el primer elemento y devolver su puntero.
Con estas modificaciones, deberíamos poder llamar a la función add de la siguiente manera: