You are on page 1of 9

Listas enlazadas con C# EAP

Ingeniera de Sistemas
UNIVERSIDAD NACIONAL
JOS FAUSTINO SANCHEZ CARRIN
FACULTAD DE INGENIERA
ESCUELA ACADMICA PROFESIONAL
DE INGENIERA DE SISTEMAS
CURSO
LENGUAJE DE PROGRAMACIN II
SEPARATA
LISTAS ENLAZADAS: COLAS Y PILAS
(Con!"n" #$%!&o "n C'(
DOCENTE
ING) JAVIER AL*ERTO MANRI+UE +UI,ONEZ
HUACHO - PER.
/01/2I
_______________________________________________________________________________
Lenguaje de Programacin II Ing. Javier Alberto
anri!ue "ui#onez
1
Listas enlazadas con C# EAP
Ingeniera de Sistemas
ESTRUCTURAS TIPO COLAS
$na cola es una estructura de datos !ue almacena elementos en una lista % &ermite acceder a los
datos &or uno de los e'tremos de la lista. $n elemento se inserta en la cola (&arte )inal* de la lista
% se su&rime o elimina &or el )rente (&arte inicial+ cabeza o )rente* de la lista. Las a&licaciones
utilizan una cola &ara almacenar elementos en un orden de a&aricin o concurrencia.
Los elementos se eliminan (se !uitan* de la cola en el mismo orden en !ue se almacenan %+ &or
consiguiente+ una cola es una estructura de ti&o ,I,- (,irst.In&ut / ,irst.-ut&ut &rimero en entrar
&rimero en salir o bien &rimero en llegar &rimero en ser atendido*. $n servicio atencin al cliente
en una em&resa+ la gestin de tareas de im&resin+ son los ejem&los. 0esde el &unto de vista de
estructura de datos+ una cola es similar a una &ila+ en donde los datos se almacenan de un modo
lineal % el acceso a los datos solo est1 &ermitido en los e'tremos de la cola.
Las actividades que estn permitidas en las colas son:
Creacin de una cola vaca
2eri)icacin de !ue la cola est1 vaca
A#adir un dato al )inal de una cola
Eliminacin de los datos de la cabeza de la cola
Las colas se pueden implementar utilizando arreglos o listas enlazadas.
ESTRUCTURA TIPO PILA
La &ila (stac3* es una coleccin ordenada de elementos a los !ue solo se le &uede acceder &or un
4nico lugar o e'tremo de la &ila. Los elementos de la &ila se a#aden o se !uitan (borran* de la
misma slo &or su &arte su&erior (cima*. Este es el caso de una &ila de libros+ una &ila de &latos+
una &ila de cajas+ etc.
_______________________________________________________________________________
Lenguaje de Programacin II Ing. Javier Alberto
anri!ue "ui#onez
2
FINAL (Ultimo) FRENTE (Primero)
Listas enlazadas con C# EAP
Ingeniera de Sistemas
Las entradas de la &ila deben ser eliminadas en el orden inverso al !ue se situaron en la misma.
Por ejem&lo+ se &uede crear una &ila de libros+ situando &rimero un diccionario+ encima de 5l una
enciclo&edia % encima de ambas una novela de modo !ue la &ila tendr1 la novela en la &arte
su&erior. Cuando se !uitan los libros de la &ila+ &rimero debe !uitarse la novela+ luego la
enciclo&edia % &or 4ltimo el diccionario. 0ebido a la &ro&iedad es&ec)ica 64ltimo en entrar.&rimero
en salir7 a las &ilas se les conoce como estructuras de datos LI,- (LAS8.I9P$8+ ,I:S8.
-$8P$8*. Las o&eraciones usuarios en la &ila son; insertar+ !uitar. La o&eracin insertar (Pus<*
a#ade un elemento en la Cima de la &ila % la o&eracin "uitar (Po&* elimina un elemento de la
&ila.
ESTRUCTURAS DINMICAS DE DATOS
Las estructura din1micas de datos son a!uellas estructuras de datos !ue &ermiten crear sus
elementos en la medida !ue se les necesita. Esto <ace &osible utilizar estructuras de datos !ue
varan su tama#o (n4mero de elementos*. Las estructura din1micas de datos se clasi)ican de la
siguiente manera;
Listas
Arboles
=ra)os
LISTAS ENLAZADAS
Las listas enlazadas (ligada o encadenada o 6lin3ed list 7* es una coleccin de elementos
(llamados nodos* dis&uestos uno a continuacin de otro+ cada uno de ellos conectado al siguiente
elemento &or un 6enlace7 o re)erencia. La idea b1sica consiste en construir una lista de elementos
llamados nodos !ue se com&onen de dos &artes; la &rimera &arte !ue contiene la in)ormacin % es
&or consiguiente un valor de ti&o registro % la segunda &arte un cam&o de ti&o re)erencia !ue
a&unta al siguiente elemento (nodo* de la lista.
_______________________________________________________________________________
Lenguaje de Programacin II Ing. Javier Alberto
anri!ue "ui#onez
3
Listas enlazadas con C# EAP
Ingeniera de Sistemas
Las listas enlazadas son accedidas &or un variable re)erencia (&rimero* !ue a&unta al &rimer
elemento> este &rimer elemento a&unta al segundo % as sucesivamente <asta encontrar al 4ltimo
elemento cu%o enlace no a&unta a ning4n nodo &or lo cual se indica !ue a&unta a null.
CLASIFICACION DE LA LISTAS ENLAZADAS
Las listas se pueden dividir en cuatro categoras:
Listas sim&lemente enlazadas con insercin ti&o cola o &ila % listas con insercin
ordenada.
Listas doblemente enlazadas
Lista circulares sim&les %/o listas circulares doblemente enlazadas
Las operaciones con las listas enlazadas pueden ser:
Inicializacin o creacin + con declaracin de nodos
Insercin de elementos a la lista; al )inal de la lista (ti&o cola* o al inicio de la lista
(ti&o &ila*
:ecorrer la lista enlazada
o ostrar/utilizar el contenido de un nodo
o ?uscar un nodo es&ec)ico de acuerdo a su contenido de sus cam&os
o Eliminar un nodo es&ec)ico %/o eliminar todos los nodos
-tros.
LISTA ENLAZADA CON INSERCION TIPO COLA
Es una lista enlazada donde el &rimer elemento en ser creado ser1 el &rimer elemento en ser
accesado. El acceso !ue realiza a trav5s del &rimer nodo de la lista !ue recibe el nombre de
cabeza o cabecera (primero de la lista*. En ocasiones se mantiene tambi5n una re)erencia al
ltimo nodo de la lista enlazada. Este 4ltimo nodo es la cola de la lista % un &untero al 4ltimo nodo
es la re)erencia de cola. Para algunos &rocesos se crean otras re)erencias a cual!uier elemento
de la lista.
La constante nula re&resentada &or la &alabra null se utiliza &ara indicar el valor re)erencia no
a&unte a ning4n nodo. Este constante nula se &uede usar en el cam&o enlace o siguiente del
nodo )inal o en una lista !ue no tiene ning4n nodo en el cual se utiliza null como re)erencia de
cabeza % de cola. La lista !ue no tiene ning4n elemento se denomina lista vaca. A continuacin
se &resenta un &rograma en C# donde se im&lementa una lista enlazada con insercin ti&o cola.
using System;
namespace ListasEnlazadas
_______________________________________________________________________________
Lenguaje de Programacin II Ing. Javier Alberto
anri!ue "ui#onez
Enlace In)ormaci
nnDatos
primero ultimo
null
4
Listas enlazadas con C# EAP
Ingeniera de Sistemas
{ public class Empleado
{ private int empleado_id;
private String apellido;
private String nombre;
private double sueldo;
public Empleado ( )
{ empleado_id = 0;
apellido = "";
nombre = "";
sueldo = 0;

public Empleado ( int empleado_id! String apellido! String nombre! double sueldo )
{ t"is#empleado_id = empleado_id;
t"is#apellido = apellido;
t"is#nombre = nombre;
t"is#sueldo = sueldo;

public int getEmpleado_id ( )


{ return empleado_id;

public void setEmpleado_id ( int empleado_id )


{ t"is#empleado_id = empleado_id;

public String get$pellido ( )


{ return apellido;

public void set$pellido ( String apellido )


{ t"is#apellido = apellido;

public String get%ombre ( )


{ return nombre;

public void set%ombre ( String nombre )


{ t"is #nombre = nombre;

public double getSueldo ( )


{ return sueldo;

public void setSueldo ( double sueldo )


{ t"is #sueldo = sueldo;

using System;
namespace ListasEnlazadas
{ public class %odo
{ private Empleado empleado;
private %odo siguiente;
public %odo ( Empleado empleado )
{ t"is #empleado = empleado;

public Empleado getEmpleado ( )


{ return empleado;

public void setEmpleado ( Empleado empleado )


{ t"is #empleado = empleado;

public %odo getSiguiente ( )


{ return siguiente;

public void setSiguiente ( %odo siguiente )


_______________________________________________________________________________
Lenguaje de Programacin II Ing. Javier Alberto
anri!ue "ui#onez
5
Listas enlazadas con C# EAP
Ingeniera de Sistemas
{ t"is#siguiente = siguiente;

using System;
namespace ListasEnlazadas
{ public class &ola
{ private %odo primero;
private %odo ultimo;
public %odo get'rimero()
{ return primero;

public void set'rimero(%odo primero)


{ t"is#primero = primero;

public %odo get(ltimo()


{ return ultimo;

public void set(ltimo(%odo ultimo)


{ t"is#ultimo = ultimo;

public void agrega (Empleado empleado)


{ %odo nuevo;
nuevo = ne) %odo(empleado);
nuevo#setSiguiente(null);
i* ( primero == null )
{ primero = nuevo;

else
{ ultimo#setSiguiente(nuevo);

ultimo = nuevo;

public +oolean es,acia ( )


{ return primero == null;

public double totalizarSueldos ( )


{ %odo au-iliar;
au-iliar = primero;
double total.eSueldos=0;
)"ile ( au-iliar /= null )
{ total.eSueldos = total.eSueldos 0
au-iliar#getEmpleado()#getSueldo();
au-iliar = au-iliar#getSiguiente();

return total.eSueldos;

public void eliminar (Empleado oEmpleado)


{ int encontrado=0;
%odo actual; %odo anterior;
i* (/es,acia())
{ actual = primero;
anterior = primero;
)"ile ((actual /= null) 11 (encontrado == 0))
{ i* (actual#getEmpleado()#getEmpleado_id() ==
oEmpleado#getEmpleado_id() )
{ encontrado = 2;

else
{ anterior = actual;
actual = actual#getSiguiente();
_______________________________________________________________________________
Lenguaje de Programacin II Ing. Javier Alberto
anri!ue "ui#onez
6
Listas enlazadas con C# EAP
Ingeniera de Sistemas

i* (encontrado == 2)
{ i* (actual == primero)
{ primero = actual#getSiguiente();

else
i* ( actual#getSiguiente() == null )
{ anterior#setSiguiente(null);
ultimo = anterior;

else
{ anterior#setSiguiente(actual#getSiguiente());

else
{ &onsole#3riteLine("%o se encuentra ///" 0 oEmpleado
#getEmpleado_id());

else
{ &onsole#3riteLine("Lista vac4a ///");

public void Listado ()


{ i* (/es,acia())
{ %odo au-iliar;
au-iliar = primero;
)"ile ( au-iliar /= null )
{ Empleado oEmpleado;
oEmpleado = au-iliar#getEmpleado();
&onsole#3riteLine("Empleado_id 5 " 0
oEmpleado#getEmpleado_id());
&onsole#3riteLine("$pellido 5 " 0
oEmpleado#get$pellido());
&onsole#3riteLine("%ombre 5 " 0
oEmpleado#get%ombre());
&onsole#3riteLine("Sueldo 5 " 0
oEmpleado#getSueldo());
au-iliar = au-iliar#getSiguiente();

else
{ &onsole#3riteLine("Lista vac4a ///");

public void vaciar ( )


{ primero = null;

using System;
namespace ListasEnlazadas
{ public class 'rogram
{ static void 6ain ( string78 args )
{ &ola o&ola= ne) &ola();
&onsole9ey:n*o opcion;
do
{ menu'rincipal();
opcion = &onsole#;ead9ey(true);
&onsole#3riteLine();
s)itc" (opcion#9ey )
{ case &onsole9ey#$5 o&ola=agregar(o&ola);
_______________________________________________________________________________
Lenguaje de Programacin II Ing. Javier Alberto
anri!ue "ui#onez
7
Listas enlazadas con C# EAP
Ingeniera de Sistemas
brea<;
case &onsole9ey#E5 o&ola = eliminar(o&ola);
brea<;
case &onsole9ey#=5 totalizar(o&ola);
brea<;
case &onsole9ey#L5 listar(o&ola);
brea<;

)"ile ( opcion#9ey /= &onsole9ey#Escape 11 opcion#9ey /= &onsole9ey#S


);
public static void menu'rincipal()
{ &onsole#3riteLine (">t6en? 'rincipal");
&onsole#3riteLine (">t@@@@@@@@@@@@@@");
&onsole#3riteLine("($)gregar");
&onsole#3riteLine("(E)liminar");
&onsole#3riteLine("(=)otalizar sueldos");
&onsole#3riteLine("(L)istar");
&onsole#3riteLine("(S)alir");
&onsole#3rite("EliAa su opciBn5 ");

public static &ola agregar(&ola o&ola)
{ Empleado oEmpleado= ne) Empleado();
&onsole#3rite("Empleado_id 5 ");
oEmpleado#setEmpleado_id(:ntCD#'arse(&onsole#;eadLine()));
&onsole#3rite("$pellido 5 ");
oEmpleado#set$pellido(&onsole#;eadLine());
&onsole#3rite("%ombre 5 ");
oEmpleado#set%ombre(&onsole#;eadLine());
&onsole#3rite("Sueldo 5 ");
oEmpleado#setSueldo(.ouble#'arse(&onsole#;eadLine()));
o&ola#agrega(oEmpleado);
return o&ola;

public static &ola eliminar(&ola o&ola)
{ Empleado oEmpleado= ne) Empleado();
&onsole#3rite("Empleado_id 5 ");
oEmpleado#setEmpleado_id(:ntCD#'arse(&onsole#;eadLine()));
o&ola#eliminar(oEmpleado);
return o&ola;

public static void totalizar(&ola o&ola)
{ double total=o&ola#totalizarSueldos();
&onsole#3riteLine("=otal 5 "0total);

public static void listar(&ola o&ola)
{ o&ola#Listado();

LISTA ENLAZADA CON INSERCION TIPO PILA


Es una lista enlazada donde el ltimo elemento en ser creado ser el primero en ser accesado. Se le conoce
como LIFO (Last input irst output!. " continuaci#n se presenta un diagrama de la orma en la lista enlazada
tipo pila:
_______________________________________________________________________________
Lenguaje de Programacin II Ing. Javier Alberto
anri!ue "ui#onez
8
Listas enlazadas con C# EAP
Ingeniera de Sistemas
A continuacin se presenta el mtodo para convertir la lista enlazada tipo cola a lista enlazada tipo
pila:
public void agrega(Empleado empleado)
{ %odo nuevo;
%odo nuevo = ne) %odo(empleado);
nuevo#setSiguiente(primero);
primero=nuevo;

_______________________________________________________________________________
Lenguaje de Programacin II Ing. Javier Alberto
anri!ue "ui#onez
$%%%
&%%% '%%% (%%%
$%%%
&%%% '%%% (%%%
)%%%
*uevo + )%%%
$%%%
&%%% '%%% (%%%
)%%%
,rimero+ $%%%
( ' & $
)
' ( & $
%%%)
$ & ' (
$%%%
&%%% '%%% (%%%
)%%%
,rimero + )%%%
( ' & $ )
*uevo + )%%%
$%%% &%%%
'%%% (%%%
)%%%
( ' & $ )
,rimero+ )%%%

n344
-,rimero+ $%%%
,rimero + $%%%
n344
n344
n344
*uevo + )%%%

You might also like