Pregunta: | 1783 - DUDAS DE PASCAL |
Autor: | José Miguel Valenzuela Pereira |
Como podemos trabajar con pilas y colas en pascal? |
Respuesta: | fernando aguilar |
si keres trabajar con pilas y colas no uses arrays, te vas a complicar la vida, entender el tema de los punteros o la estructuras de datos dinamicas no es muy dificil... le tenes ke agarrar la mano nomas,
si keres explicaciones detalladas mandame un mail, tambien te puedo pasar un par de programas implementando punteros. |
Respuesta: | josé VAlenzuela |
*lo primero que debes de saber es que Las pilas y colas son estructuras abstractas, es decir que no son tipos de datos reales en pascal por llamarles de alguna manera, por lo tanto a lo más que puedes hacer es representarlas y la manera más facil de hacerlo es utilizando arreglos(array) ahi te va la declaracion*
***********primero la declaracion de pilas*************************** (los parentesis no los tomes en cuenta solo son aclaraciones para ti) program pila; uses crt; cont n=10; (este parentesis no lo tomes en cuenta ***** n representa el numero de casillas o espacios que tendrá la pila, n puede ser el numero que quieras) type pila=record elem=array[1..n] of integer;(depende de que vayas a utilizar en vez de integer puede ser string o bien char, pero ya sabes en la pila solo se almacenarán datos del mismo tipo, es decir que en donde dice integer siginifica que solo se almacenarán numeros enteros en la pila) cima:0..n; end; var p:pila; (ahora te voy a escribir dos subprogramas o procedimientos que te van a facilitar la vida ya verás por qué) procedure pop(var p:pila; var dato:integer); (ojo la variable dato debe de ser del mismo tipo que los datos que se almacenarán en la pila) begin if P.cima<>0 then begin dato:=P.elem[p.cima]; dec(cima); end else writeln('pila vacía'); end; (Este procedimiento pop te ayudará a eliminar o sacar uno por uno los elementos de la pila) procedure push(var p:pila dato:integer); beigin if p.cima<n then begin inc(cima); p.elem[p.cima]:=dato; end; else writeln('ya no hay espacio'); end; (este procedimiento push te ayudará a insertar un elemento en la pila) (ahora si vas a ver por qué es que esto procedimientos "pop y push" te facilitan la vida) (vamos a hacer un procedimiento de llenado de la pila utilizando pop y push)(tal vez no me alcance asi que te lo mando en otra parte) |
Respuesta: | josé Vaenzuela |
(continuacion)
(a como te expliqué vamos a hacer un procedimiento para llenar la pila) procedure llenar(var p:pila); var dato:integer; i:integer; resp:char; begin writeln( '...............LLENANDO LA PILA....................'); i:=0; p.cima:=0; repeat writeln('numero:'); readln(dato); push(p,dato);(es aqui en donte te ahorras un mundo, este llamada al procedimiento push, lo que hará es que,el dato que acabamos de leer lo insertará en la pila) inc(i); (con este "i" contarémos el numero de datos que se van introduciendo, para ase llevar el control de cuando la pila esté llena más adelante notarás cómo) repeat writeln(´Desea introducir otro numero?[s/n]'); readln(resp); until resp in ['n','N','s','S']; (con esto tienes garantizado que opcion solo recibira un caracter n ó s mayúscula o minuscula) until (resp in ['n','N']) or (i=n);end; (este until significa que solo se deja de pedir datos hasta que la pila esté llena o se teclee una n o N de no) (y por último llamas) begin llenar(p) end.(de la misma manera usa el proc. pop) |
Respuesta: | Benito Cuevas Amézaga |
Para utilizar pilas y colas en pascal es necesario utilizar procedimientos y funciones para almacenar datos (añadirlos o quitarlos), ver si una pila está llena o queda más espacio, etc. Es un proceso mas bien sencillo si utilizas arreglos para estas simulaciones. |
Respuesta: | Ignacio Chicuate |
Mira las pilas y las colas las puedes representar con arreglos y con listas encadenadas o con listas doblemente encadenadas.
O sea utilizando punteros o bien variables dinamicas. si lo piensas intentar te recomiendo que primero lo hagas con arreglos , depues con listas encadenadas y por ultimo con listas doblemente encadenadas. tengo un curso de punteros si lo quieres mandame un e-mail . |
Respuesta: | Iván Suárez Gómez |
Es cierto que para trabajar con colas y pilas se puede hacer con punteros bla bla bla. Pero si no quieres complicarte la vida y no vas a usar mucho más de 64kb en estas estructuras, es más fácil usar un simple array. |
Respuesta: | Jorge Viqueira |
Podés simular las estructuras de datos que referis, usando puntero (listas enlazadas) y vas a tener un simulación bastante real si lo implementan bien. Supongo que si preguntan esto estan estudiando, más precisamente INFORMATICA y de punteros ni ahí; por eso si necesitan ayuda mandenme un mail. chau, |
Respuesta: | daniel garcia |
Para manejar Pilas y Colas en pascal debes trabajar con Punteros, de forma dinamica como se denomina en programacion. Es decir, manejar direcciones de memoria, donde estan los datos. Para mas dudas enviame un correo. |