¿Te gustaría aprender Lenguaje C/C++?
Tenemos los cursos que necesitas.¡Haz clic aquí!

 

Inserción de un elemento en la lista

Enseguida, el algoritmo de inserción y el registro de los elementos: afirmación del elemento que se insertará, asignación de la memoria destinada al nuevo elemento, llenar el contenido del campo de los datos, actualizar los punteros hacia el primer y último elemento si es necesario.
Caso particular: en una lista con un solo elemento, el primer elemento es al mismo tiempo el último. Luego, se tiene que actualizar el tamaño de la lista.

Inserción en una lista vacía

Modelo de la función:

int ins_lista_circ_vacia(Lista * lista, char *dato);

La función devuelve -1 en caso de falla, si no devuelve 0. 

Etapas: asignación de memoria para el nuevo elemento, rellenar el campo de datos del elemento nuevo, el puntero siguiente del nuevo elemento apuntará hacia si mismo (es la etapa que vuelve a la lista circular), los punteros inicio y fin apuntarán hacia el nuevo elemento, el tamaño es actualizado.

La función:

/* inserción en una lista vacía */
int ins_lista_circ_vacia(Lista * lista, char *dato){
    Elemento *nuevo_elemento;
    if ((nuevo_elemento = (Elemento *) malloc (sizeof (Elemento)))
          == NULL)
      return -1;       
    if ((nuevo_elemento->dato = (char *) malloc (50 * sizeof (char)))
            == NULL)
       return -1;
    strcpy (nuevo_elemento->dato, dato);

    nuevo_elemento->siguiente = nuevo_elemento;
    lista->inicio = nuevo_elemento;
    lista->fin = nuevo_elemento;
    lista->tamaño++;
    return 0;
}

Inserción en una lista no vacía

Modelo de la función:

int ins_lista_circ(Lista * lista, Elemento *actual, char *dato);

La función devuelve -1 en caso de equivocación, si no devuelve 0. 

La inserción se efectuará al final de la lista. 

Etapas: asignación de memoria para el nuevo elemento, rellenar el campo de datos del reciente elemento, el puntero siguiente del nuevo elemento apunta hacia la dirección del primer elemento (conservar la lista circular), el puntero inicio no cambia, el puntero fin apunta hacia el nuevo elemento, el tamaño se incrementa en una unidad.

 

La función:

/* inserción en una lista no vacía */
int ins_lista_circ(Lista * lista, Elemento *actual, char *dato){
    Elemento *nuevo_elemento;
    if ((nuevo_elemento = (Elemento *) malloc (sizeof (Elemento)))
            == NULL)
        return -1;       
    if ((nuevo_elemento->dato = (char *) malloc (50 * sizeof (char)))
            == NULL)
        return -1;
    strcpy (nuevo_elemento->dato, dato);

    if(actual != lista->fin)
        return -1;
  
    nuevo_elemento->siguiente = actual->siguiente;
    actual->siguiente = nuevo_elemento;
    lista->fin = nuevo_elemento;
    lista->tamaño++;
    return 0;
}

Te esperamos en el siguiente articulo en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría aprender Lenguaje C/C++?
Tenemos los cursos que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax