JUEGUECILLO DE PROGRAMAR EN C

[Greenpot]

RangoForero del todo a cien
Registro
4 Nov 2003
Mensajes
358
Reacciones
0
Esta es la primera practica.
El que la haga se lleva un gallifante :D

Se desea implementar un cola de enteros mediante una lista de nodos doblemente enlazada. La cola debe facilitar operaciones para insertar un elemento, extraer un elemento, inicializar una cola, destruir una cola y copiar una cola en otra distinta.
Además, la cola debe proporcionar un mecanismo de iteración que permita examinar cualquier elemento mediante un iterador interno que se podrá mover secuencialmente desde el principio o el final de la cola.

Un iterador es un mecanismo que permite referenciar los elementos de un contenedor, en general se implementa como un puntero. En el caso que nos ocupa, el iterador debe estar asociado a un elemento y no a una posición; si el elemento que referencia se desplaza, el iterador debe seguir señalándolo. Si el elemento referenciado por el iterador se extrae, éste debe señalar al siguiente.

La interfaz de las operaciones de la cola debe atenerse a lo establecido en la tabla de operaciones a implementar.

Use para los nodos de la lista y para la cola las siguientes estructuras:
struct NodoCola {
/* Escriba los campos necesarios en los nodos de la lista
de enteros doblemente enlazada */
};
typedef struct NodoCola TNodoCola, *PNodoCola;
struct Cola {
/* Escriba los campos necesarios para mantener la lista
de nodos y realizar las operaciones que se piden sobre la cola */
};
typedef struct Cola TCola, *PCola;

Operaciones a implementar
Declaración prototipo Descripción
void inicializa(PCola cola) Inicializa una cola vacía. Prepara la cola para que pueda ser utilizada, haciendo la función de constructor. Las operaciones siguientes no se pueden realizar si no se ha llamado a inicializa sobre la cola. Inicializa no se puede llamar sobre una cola ya inicializada.
int inserta(PCola cola,int t) Se inserta en el final de la cola un entero t. La función devuelve 1 si se ha realizado la inserción y 0 en caso contrario. Si el elemento insertado es el primero, el iterador pasa a señalarlo. Para crear un nodo en memoria dinámica emplee la función malloc.
int extrae(PCola cola) Se extrae el elemento del principio de la cola. La función devuelve 1 si se ha realizado la extracción y 0 en caso de que no haya elementos a extraer. Si el iterador señala al elemento que se extrae pasa a señalar al siguiente, si existe. Para destruir un nodo de memoria dinámica emplee la función free.
int tamano(PCola cola) Devuelve el número de datos en la cola.
void copia(PCola destino, PCola origen) Se copia los datos de la cola origen en la cola destino de forma que al final las dos colas contengan los mismos datos en el mismo orden. El iterador debe mantener la posición relativa en la cola destino con respecto a la origen.
void destruye(PCola cola) Se vacía la cola liberando todos los nodos que la componen. Hace la función de destructor, no debiendo ser utilizada la variable después de llamarse. Para liberar un nodo de memoria dinámica emplee la función free.
int examina(PCola cola) Se devuelve el entero del elemento al que señala el iterador. En caso de que la cola esté vacía se devuelve 0.
int inicio(PCola cola) Se sitúa el iterador en el primer elemento de la cola. La función devuelve 1 si se ha realizado la operación y 0 si la cola está vacía.
int fin(PCola cola) Se sitúa el iterador en el último elemento de la cola. La función devuelve 1 si se ha realizado la operación y 0 si la cola está vacía.
int avanza(PCola cola) Se avanza el iterador al siguiente elemento de la cola. El sentido de avance es desde el inicio de la cola hacia el fin, el último elemento añadido. La función devuelve 1 si se ha realizado la operación y 0 en caso contrario.
int retrocede(PCola cola) Se retrocede el iterador al anterior elemento de la cola. El sentido del retroceso es desde el fin de la cola hacia el principio, el primer elemento que saldrá. La función devuelve 1 si se ha realizado la operación y 0 en caso contrario.
 
joder tio si no sabes hacer las practicas que te mandan no las postees en un forooo JUAAAAAAAAS
 
Joder

Yo tengo esa práctica hecha de la universidad.
Pero por supuesto no la voy a postear.
Un consejo: cuidado con EOF que están por todas partes...
 
Ese EOF es un hijo puta

T podrias tirar el rollo y mandarmela qe no creo qe comparen las de aqi con las de pucela ;)
 
¿En que carrera os enseñan a programar en C ?
¿es una asignatura de libre elección o teneis que hacerla por cojones?
¿en que provincia estais?

agradecería que me lo dijerais

En cuanto al ejercicio, pues yo habré hecho algo parecido pero lo mejor que puedes hacer es hacerlo tu mismo.

El ejercicio esta muy detallado, te da todas las funciones prototipo que necesitas las estructuras y todo lo que tiene que hacer cada procedimiento. "Sólo" es pasar del lenguaje humano al lenguaje de C.
 
C

A mí en la carrera me pusieron esa práctica, pero había que resolverla en pseudocódigo como Dios manda.
El C lo aprendí en FP.
Por cierto que soy de Pucela (Valladolid pa los que no sepan que tol mundo lo llama asín).
 
Hola, lo tengo en ADA, si quieres le entregas eso y quedas de guay pero supongo que no querras en serio que te den una practica hecha o quieres ser un programador de Visual Basic en el futuro?

Saludos al foro y a montar.
 
en ada? donde estudias? es que pensaba que mi facultad era de las pocas que enseñaban ada(que por cierto le acabe cogiendo mogollon de asquete)
menos mal que estructura de datos lo cambiaron a c++
para el otro, tronco mejor currate las practicas de la uni si quieres comerte algo de programador
 
en Las Palmas pero emigre a otra universidad, Ada solo se enseña alli en primero y las practicas de E. de datos tb hay que hacerlas en ADA :lol:
tu estas en la UPM?
 
Atrás
Arriba Pie