Funciones De Listas Simples

Páginas: 8 (1862 palabras) Publicado: 23 de mayo de 2012
Inserción al final de la lista
Ejemplo de la función: 

int ins_fin_lista (Lista *lista, Element *actual, char *dato);

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

Etapas:
* asignación de memoria al nuevo elemento
* rellenar el campo de datos del nuevo elemento
* el puntero siguiente del ultimo elemento apunta hacia el nuevo elemento
* elpuntero fin apunta hacia el nuevo elemento
* el puntero inicio no cambia
* el tamaño es incrementado

La función 

/*inserción al final de la lista */
int ins_fin_lista (Lista * lista, Element * actual, char *dato){
Element *nuevo_elemento;
if ((nuevo_elemento = (Element *) malloc (sizeof (Element))) == NULL)return -1;
if ((nuevo_elemento->dato = (char *) malloc (50 * sizeof (char)))
== NULL)
return -1;
strcpy (nuevo_elemento->dato, dato);

actual->siguiente = nuevo_elemento;
nuevo_elemento->siguiente = NULL;lista->fin = nuevo_elemento;

lista->tamaño++;
return 0;
}

4. Inserción en otra parte de la lista
Ejemplo de la función: 

int ins_lista (Lista *lista, char *dato,int pos);

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

La inserción se efectuará después de haber pasado a lafunción una posición como argumento. 
Si la posición indicada no tiene que ser el último elemento. En ese caso hay que utilizar la función de inserción al final de la lista. 

Etapas:
* asignación de memoria al nuevo elemento
* rellenar el campo de datos del nuevo elemento
* Elegir una posición en la lista (la inserción se hará después de haber elegido la posición)
* elpuntero siguiente del nuevo elemento apunta hacia la dirección a la que apunta el punterosiguiente del elemento actual.
* el puntero siguiente del elemento actual apunta al nuevo elemento
* los punteros inicio y fin no cambian
* el tamaño se incrementa en una unidad

La función 

/* inserción en la posición solicitada */
int ins_lista (Lista * lista, char*dato, int pos){
if (lista->tamaño < 2)
return -1;
if (pos < 1 || pos >= lista->tamaño)
return -1;

Element *actual;
Element *nuevo_elemento;
int i;

if ((nuevo_elemento = (Element *) malloc (sizeof(Element))) == NULL)
return -1;
if ((nuevo_elemento->dato = (char *) malloc (50 * sizeof (char)))
== NULL)
return -1;

actual = lista->inicio;
for (i = 1; i < pos; ++i)
actual = actual->siguiente;
if(actual->siguiente == NULL)
return -1;
strcpy (nuevo_elemento->dato, dato);

nuevo_elemento->siguiente = actual->siguiente;
actual->siguiente = nuevo_elemento;
lista->tamaño++;
return 0;

-------------------------------------------------
C. Eliminación deun elemento de la lista
A continuación un algoritmo para eliminar un elemento de la lista:
* uso de un puntero temporal para guardar la dirección de los elementos a eliminar
* el elemento a eliminar se encuentra después del elemento actual

Apuntar el puntero siguiente del elemento actual hacia la dirección del puntero siguiente del elemento a eliminar
* liberar la memoria...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Java lista simple circular
  • lista enlazadas simples
  • Lista Ligada Simple
  • Practica De Listas Simples
  • 1 OPERACIONES CON LISTAS SIMPLES
  • Listas Simples Java
  • Programacion lista simple
  • LISTAS SIMPLES ABIERTAS

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS