Está en la página 1de 27

Colegio Universitario Francisco de Miranda

PNF Informtica
Seccin I06 202
Trayecto I
Proyecto Sociotecnolgico I Mdulo III
Integrantes:
Roxaren Acosta Daniel Erazo
Sabino Flores Yulianni Torres
Yonatan Roche Romel suchmolin
CLASIFICACIN
Listas Simplemente Enlazadas
Listas Doblemente Enlazadas
Listas Circulares
Constituye una coleccin de elementos llamados nodos.
El orden entre estos se establece por medio de punteros; es
decir, direcciones o referencias a otros nodos.
Estructura de Nodos
Un campo INFORMACION
que ser del tipo de los
datos que se quiera
almacenar en la lista.
Un campo LIGA, de tipo
puntero, que se utiliza para
establecer la liga o el enlace
con otro nodo de la lista.
Consta de dos partes:
Listas Ligadas Sencillas
Listas Ligadas
Es un grupo de datos en dnde cada dato contiene adems un
apuntador hacia el siguiente dato en la lista.
Declaracin.
Punteros de cabecera y cola.
Operador de seleccin.
Insercin.
Bsqueda y eliminacin de
elementos.
Datos
Siguiente
Inicio
Datos
Siguiente
Fin
NULL
typerdef struct _nodo {
int dato;
struct _nodo *siguiente;
struct _nodo *anterior;
} tipoNodo;

typedef tipoNodo *pNodo;
typedef tipoNodo *lista;
TipoNodo:
Es el tipo para declarar nodo
pNodo:
Es el tipo para declarar punteros
a un nodo
Cuando se construye una lista enlazada, el acceso a la lista
es a travs de uno o mas apuntadores.
El acceso mas comn es a travs del elemento cabeza.
El apuntador al elemento cabeza se le llama apuntador
cabeza.
Tambin es comn que el comienzo sea a travs del
elemento cola se llama apuntador cola

Aunque tambin realmente el acceso a una lista logada se
puede hacer a travs de cualquier elemento de la lista
Lista
Jose Romel Luisa
NULL
// Definicin de nodo
struct lista {
Typedef double
Tipodato;

Tipodato dato;
struct lista *p;
};
// Declaracin de apuntadores

listas *p_cabecera;

//struct lista *p_cabecera
Es una estructura de datos lineal, en la cual cada elemento
tiene sucesor y un predecesor nicos, con excepcin del primero
y del ltimo, sencilla de manipular, es de estructura rgida, pero el
compilador define 64 B en la estructura .
Primero
s Hola
Ultimo
prox
s que
prox
s que
prox
La Insercin tiene dos casos particulares que son:
Insertar el nuevo nodo en el frente, principio
de la lista.
Insertar el nuevo nodo en cualquier otro lugar
de la lista
Insertar (Inicio, Anterior, Elemento)
Anterior
Dato
Inicio
Elemento anterior
Dato NULL
Int ins_en_lista_ vaca
(Lista *lista, Char *dato)

Si la funcin es 1 nos
indicara ERROR, y si es 0
nos indicara que esta
Bien.

Int ins_ inicio_lista
(Lista *lista, Char *dato)

Si la funcin es -1 nos
indicara ERROR,
caso contrario es 0

Int ins_ fin_lista
(Lista *lista, element
*actual, Char *dato)

Si la funcin es -1 nos
indicara ERROR,
caso contrario es 0
Int ins_ lista
(Lista *lista, Char *dato,
Int pos)

Si la funcin es -1 nos
indicara ERROR,
caso contrario es 0
Insertar un nuevo dato al inicio de la lista
int ins_ inicio_ lista (lista *lista, char *dato) {
element *nuevo_elemento;
if ((nuevo_elmento = (element *) malloc (sizeof (element))) ==
null)
return -1;
if ((nuevo_elmento->dato = (char *) malloc (50 * sizeof))) == null)
return -1;
strcpy (nuevo_elemento->dato, dato);

nuevo_elemento->siguente = lista ->inicio
lista->inicio = nuevo_elemento;
lista->tamao++;
return 0;
}
El procedimiento consulta la informacin sobre un
determinado elemento si se encuentra o no en la lista.
E entero: inic; S entero: posic, anterior;
E tipo_element: elemento; S logico: encontrado;
E array: m
(primero:puntero; v:integer;
var p:puntero; var eureka:boolean);
begin
p:=primero;
while (p<>nil) and (p^.dato<>v)
do
p:=p^.sig;
if p=nil
then begin
writeln('Elemento no
encontrado');
eureka:=false
end
else begin
writeln('Elemento encontrado');
eureka:=true
end
end;
Int sup_ inicio
(Lista *lista)

Si la funcin es -1 nos
indicara ERROR,
caso contrario es 0

Datos
Siguiente
Inicio
Datos
Siguiente
Fin
NULL
Datos
Siguiente
Inicio
Datos
Siguiente
Fin
NULL
1
Int sup_ lista
(Lista *lista, Int pos)

Si la funcin es -1 nos
indicara ERROR,
caso contrario es 0
Datos
Siguiente
Inicio
Datos
Siguiente
Fin
NULL
1
Datos
Siguiente
2
int sup_ inicio (lista *lista) {
if (lista->tamao == 0)
return -1;
element *sup_elemento;
sup_element = lista->inicio;
lista->inicio = lista->inicio-> siguiente;
if (lista->fin = null;
free (sup_element->dato);
free (sup_element);
lista->tamao--;
return 0;
}
Cabecera:
Nodo permanente asociado a la existencia de la lista circular, que se dispone para evitar los
lazos o bucles infinitos.
PRIMERO SIG SIG
SIG
SIG INFO INFO INFO INFO
En lugar de almacenar un puntero NULO en el campo SIG del ltimo elemento de la lista, se
hace que el ltimo elemento apunte al primero o principio de la lista. Este tipo de lista se llama
lista enlazada circular o simplemente lista circular.
SIG SI
G
SIG SIG INFO INFO INFO
CABECERA
Las listas pueden recorrerse en ambas direcciones. Cada nodo consta del campo INFO de
datos y dos campos de enlace o punteros: ANTERIOR(ANT) y SIGUIENTE(SIG) que
apuntan hacia adelante y hacia atrs.
ANT INFO SIG
NODO
(a
(b
IZQUIERDA DERECHA
Para cualquier puntero P:
nodo [nodo [p]. sig].ant=p
nodo [nodo [p]. ant.sig=p




p ant p p sig
SIG
SIG
SIG
ANT ANT ANT
La insercin de un nodo a la derecha especificado, cuya
direccin est dada por la variable M, puede presentar
vario casos:
1. La lista est vaca, se indica mediante M= NULO y
CABECERA y FIN son tambin NULO. Una insercin
indica que CABECERA se debe fijar con la direccin
del nuevo nodo y los campos ANT y SIG tambin se
establecen en NULO.
2. Insertar dentro de la lista: exige un elemento anterior
y otro posterior de X.
3. Insertar a la derecha del nodo de la extrema derecha
de la lista. Se requiere que el apuntador FIN sea
modificado.
La operacin de eliminacin es directa.
Si la lista tiene un simple nodo, entonces los
punteros de los extremos izquierdo y derecho
asociados a la lista se deben fijar en NULO. Si el
nodo del extremo derecho de la lista es sealado
para la eliminacin, la variable FIN debe modificarse
para sealar el predesor del nodo que se va a borrar
de la lista. Si el nodo del extremo izquierdo de la lista
es el que se desea borrar, la variable CABECERA
debe modificarse para sealar el elemento siguiente.
La eliminacin se puede realizar dentro de la lista.

También podría gustarte