listas c++
Ejemplo
Paso
Tipos Básicos
Estructuras
struct Tcomplex
{
double p_r;
double p_i;
};
typedef Tcomplex *TPComplex;
typedef int *TPInt;
Definición delTipo typedef char *TPChar;
ó
typedef struct Tcomplex *TPComplex;
struct Tcomplex
{
double p_r;
double p_i;
};
Declaración de
varibles
TPInt p_int;
TPChar p_char;
p_int = new(int);p_char = new(char);
Petición de
if((p_int == NULL) ||
memoria (y
(p_char == NULL))
comprobación de
{
que la ha asignado)
Acceso I:
Modifición
Acceso II:
Consulta
Borrado
cout > *p_char;cout sig = NULL;
}
d
NULL
paux
2. Si la lista es vacía introducimos al principio:
NULL
if( l == NULL )
{
l = paux;
}
l
=>
l
d
d
NULL
NULL
paux
paux
3. Sino es vacía comprobamos si hay que añadir al principio:
e
if( l.dato > d )
{
paux->sig = l;
l = paux;
}
e
=>
l
d
paux
…
l
d
NULL
paux
…
4. Insertamos en medio
a/* Creamos un puntero auxiliar
para buscar la posición donde
insertar */
pbusca = l;
e
…
l
d
NULL
paux
pbusca
/* Recoremos la lista buscando
donde insertar */
while((pbusca->sig != NULL) &&
(pbusca->sig->datos < d))
{
pbusca = pbusca->sig;
}
b
a
b
e
…
l
d
paux
pbusca
a
/* Una vez encontrada la posición
insertamos el nuevo nodo */
paux->sig= pbusca->sig;
pbusca->sig = paux;
NULL
b
e
l
d
paux
pbusca
Borrar:
Borrar es similar a la insertar. Primero se comprueba si es vacía, en tal caso no
hacemos nada. Si no estávacía buscamos el elemento que queramos borrar, y una vez
localizado, lo sacamos de la lista y liberamos la memoria que tenía asignada1. Borrado del primer elemento
if(l->dato == d)
{
ptr = l;
l =l->sig;
delete(ptr);
}
d
e
... =>
d
l
l
ptr
ptr
e
...
…
2. Borrado de un elemento intermedio
/* Creamos dos punteros
auxiliares uno que examine la
posición...
Regístrate para leer el documento completo.