sábado, 19 de enero de 2008

Insertar al Final de una Lista simplemente Enlazada en lenguaje C

Desarrolle un subprograma (procedimiento o función) iterativo llamado "insertaFinal" que inserte por al final de la lista un entero. Para crear un nodo en memoria dinámica emplee la función malloc. Si se implementa como procedimiento se debe pasar la dirección de un puntero al inicio de una lista enlazada y un entero (la lista puede estar vacía). Si se implementa como función se debe pasar un puntero al inicio de una lista enlazada y un entero (la lista puede estar vacía) y debe devolver un puntero al inicio de la lista modificada.

La estructura es:

struct NodoLista {
int dato;
struct NodoLista* sig;
};

typedef struct NodoLista TNodoLista, *PNodoLista;

void insertaFinal(PNodoLista *p, int v)
{
PNodoLista nuevo, ant;
//Crear un nodo nuevo
nuevo = (TNodoLista *)malloc(sizeof(TNodoLista));
//insertamos el valor al nuevo nodo
nuevo->dato = v;
//si es el primer nodo lo insertamos
if(*p == NULL) {
nuevo->sig = *p;
*p = nuevo;
}
else {
ant = *p;
//mientras haya lista, llegamos al final para insertar
while(ant->sig)
ant = ant->sig;
nuevo->sig = ant->sig;
ant->sig = nuevo;
}
}

3 comentarios:

Anónimo dijo...

esta muy bien pero me mandaron hacer un programa de lista donde debo incertar un valor al principio y otro al final de la lista

Anónimo dijo...

muy bueno tu aporte yo andaba buscando algo para comenzar con las listas y este ejemplo me esta ayudando muchas gracias

Anónimo dijo...

De nuevo gracias \o/ !!