![]() |
Haga click para publicitar en Alipso.com |
| Buscando Secundarios
| Universidades
| Carreras
| Test
Orientación Vocacional | Medios
| Profesores particulares
| Institutos
| Campus Material Monografias | Exámenes Secundarios | Exámenes Universitarios | Enlaces | Enviar material | Diversión Postales | Humor | Descargas | Juegos Comunidad Foros | Institucional Publicite | En su sitio | Contáctese Cursos en Buenos Aires Cursos de Informática | Cursos de apoyo al CBC | Carreras y Cursos de Diseño, Comunicación, Arte y Fotografía |
|
|
Imprimir apunte |
Recomendar a un amigo |
Recordarme el recurso |
|
Más sobre este recurso: Catalogado en base de datos como: Programacion: pascal.Implementacion TAD Pila.: Implementacion TAD pila, Contar los elementos de una pila de forma iterativa, Contar los elementos de una pila de forma recursiva, Insertar un elemento en el fondo de una pila, Invertir los elementos de una pila, Procedimiento que elimine y devuelva el úl Agregado: 29 de AGOSTO de 2000 | Palabras: 711 | Votar! | 1 voto | Promedio: Categoría: Apuntes y Monografías > Computación > Programación > |
Implementación TAD Pila.
Type
Telem:....;
Tpila=^Nodo
Nodo=record
elem:Telem;
sig:Tpila
end;
Procedure Crearpila(var pila:Tpila);
begin
pila:=nil
end;
Function Pilavacia(pila:Tpila):boolean;
begin
Pilavacia:=pila=nil
end;
Procedure Apilar(var pila:Tpila;elem:Telem);
var aux:Tpila;
begin
if not
Pilavacia(pila) then
begin
new(aux);
aux^.elem:=elem;
aux^.sig:=pila;
pila:=aux
end
else
writeln (‘pila vacia’)
end;
Procedure Desapilar(var pila:Tpila);
var aux:Tpila;
begin
if not
Pilavacia(pila) then
begin
aux:=pila;
pila:=pila^.sig;
dispose(aux)
end
else
writeln(‘ pila vacia’)
end;
Procedure Cima(pila:Tpila;var elem:Telem);
begin
if not
Pilavacia(pila) then
elem:=pila^.elem
else
writeln (‘pila vacia’)
end;
Procedure Elementos(var pila:Tpila;var ne:integer);
var paux:Tpila;
elem: Telem;
begin
new(paux);
ne:=0;
while not
Pilavacia(pila) do
begin
Cima(pila,elem);
Desapilar(pila);
Apilar(paux,elem);
ne:=ne+1
end;
while not
Pilavacia(paux) do
begin
Cima(paux,elem);
Desapilar(paux);
Apilar(pila,elem)
End
end;
* Contar los
elementos de una pila de forma recursiva
Function Elementos(var pila:Tpila):integer;
var elem:Telem;
begin
if not
Pilavacia(pila) then
begin
Cima(pila,elem);
Desapilar(pila);
Elementos:=Elementos(pila)+1;
Apilar(pila,elem)
end
else
Elementos:=0
end;
Procedure Elementos(var pila:Tpila; var ne:integer);
var elem:Telem;
begin
if not
Pilavacia(pila) then
begin
Cima(pila,elem);
Desapilar(pila);
ne:=ne+1;
Elementos(pila,ne);
Apilar(pila,elem)
end
else
writeln (‘pila vacia’)
end;
* Insertar un
elemento en el fondo de una pila
Procedure Insertarfondo(var pila:Tpila;elem:Telem);
var aux:telem;
begin
if not
Pilavacia(pila) then
begin
Cima(pila,aux);
Desapilar(pila);
Insertarfondo(pila,elem);
Apilar(pila,aux)
end
else
Apilar(pila,elem)
end;
*
Invertir
los elementos de una pila
Procedure Invertir(var pila:Tpila);
var elem:Telem;
begin
if not
Pilavacia(pila) then
begin
Cima(pila,elem);
Desapilar(pila);
Invertir(pila);
Insertarfondo(pila,elem)
end
end;
* Procedimiento
que elimine y devuelva el último elemento de una pila
Procedure Borrarultimo(var pila:Tpila;var elem:Telem; var
ultimo:boolean);
var aux:Telem;
begin
if not
Pilavacia(pila) then
begin
Cima(pila,aux);
Desapilar(pila);
Borrarultimo(pila,elem,ultimo);
if ultimo then
begin
elem:=aux;
ultimo:=false
end
else
Apilar(pila,aux)
end
else
ultimo:=true
end;
* Función que
indique si dos pilas son iguales
Function
Iguales(var P1,P2:Tpila):Boolean;
var
aux1,aux2:Telem;
resultado:boolean;
begin
if Pilavacia(P1) and Pilavacia(P2) then
resultado:=true
else
if Pilavacia(P1) or
Pilavacia(P2) then
resultado:=false
else
begin
Cima(P1,aux1);
Cima(P2,aux2);
Desapilar(P1);
Desapilar(P2);
if aux1=aux2 then
Iguales:=Iguales(P1,P2)
else
resultado:=false;
Apilar(P1,aux1);
Apilar(P2,aux2)
end
Iguales:=resultado
end;
2ª práctica
97/98 aptdo.3
Dados
una pila y cola con el mismo número de elementos comprobar si los elementos de
la pila constituyen la imagen especular de los elementos de la
cola.
Function
Imagenespecular(var pila:Tpila;var cola:Tcola):boolean;
var
auxpila,auxcola:Telem;
resultado:boolean;
begin
if not Pilavacia(pila) then
begin
Cima(pila,auxpila);
Desapilar(pila);
Imagenespecular:=Imagenespecular(pila,cola);
Primero(cola,auxcola);
Desencolar(cola);
If not
auxpila=auxcola then
resultado:=false ;
Encolar(cola,auxcola);
Apilar(pila,auxpila)
end
else
resultado:=true;
Imagenespecular:=resultado
end;
3ª práctica
97/98 aptdo.4 (
no corregido )
*
Dadas 2 pilas ordenadas ascendentemente obtener una pila con los elementos
ordenados descendentemente de las pilas 1 y 2.
Procedure
Fusionar(var p1,p2,p3:Tpila);
var
aux1,aux2:Telem;
begin
if not Pilavacia(p1) and not
Pilavacia(p2) then
begin
Desapilar(p1,aux1);
Desapilar(p2,aux2);
Insertar(aux1,aux2,p3);
Fusionar(p1,p2,p3);
Apilar(p1,aux1);
Apilar(p2,aux2)
end
end;
| ||||
| X | ||||