Implementacion TAD de Pila

Pseudocódigo

1 downloads 156 Views 8KB Size

Recommend Stories


TAD: Pila. TALLER: TAD Pila
TAD: Pila TALLER: TAD Pila Una pila (stack) es un conjunto de elementos del mismo tipo que solamente puede crecer o decrecer por uno de sus extremos.

Laboratorio 3- El TAD Pila. Algoritmos de relleno de polígonos GUIÓN DEL LABORATORIO
Algoritmos y estructuras de datos I / Fundamentos de programación II 2006-2007 Laboratorio 3- El TAD Pila. Algoritmos de relleno de polígonos GUIÓN

Pila
Magnetismo. Fem. Resistencia interna

AFC Pila de combustible alcalina
AFC Pila de combustible alcalina Es una de las primeras pilas de combustible modernas, desarrollada a principio de los años 60. Como dato curioso, men

ALEX HERIBERTO CHANCUSIG PILA
CARRERA DE INGENIERÍA EN ELECTRÓNICA E INSTRUMENTACIÓN “DISEÑO E IMPLEMENTACIÓN DEL CONTROL DE TEMPERATURA PARA EL HORNO DEL PROCESO DE SECADO DE MOTO

Story Transcript

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

1

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; Problemas * Contar los elementos de una pila de forma iterativa Procedure Elementos(var pila:Tpila;var ne:integer);

2

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);

3

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

4

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

5

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

6

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); 7

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; 5/4

8

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.