Ocio
24 de abril de 2012
Nombre:……………………………………………………………
Tiempo: 1 hora 10 minutos
(20 Puntos)
1. Considerando las siguientes estructuras definidas enlas bibliotecas entregadas en Ev@ para
filas:
typedef struct{
struct nodo{
tipo_tamano tamano;
int ele;
struct nodo *frente;
struct nodo *enlace;
struct nodo *final;
};
}fila;
a) Defina unarreglo de punteros a estructuras de tipo fila, de tamaño MAX.
b) Usando a) y usando solo las operaciones permitidas para filas, escriba un programa
principal en C, que permita crear filas en cadaposición del arreglo, es decir, en la
posición apuntada por el puntero correspondiente.
c) Usando lo realizado en b), y dada la definición:
indice = (rand() % MAX);
que aleatoriamente entregaíndices entre [0..(MAX-1)], cree un programa principal en C
que permita ingresar valores por teclado (use una variable entera X) a la fila seleccionada
mediante la variable indice. Se ingresarán valores enX, hasta que se ingrese 0 (cero). Use
solo las operaciones permitidas para filas.
a)
queue *arreglo[MAX];
b)
for (i=0; i< MAX; i++)
arreglo[i] = create();
c)
do{
indice = (rand() % MAX);printf("\nIngrese X = ");
scanf("%d", &X);
if (X!=0)
arreglo[indice] = push(X, arreglo[indice] );
}while (X!=0);
1
(10 Puntos)
2. En clases se vio la implementación de pilas con arreglos talcomo aparece en el lado izquierdo
de la figura de abajo:
Creciente
hacia abajo
Creciente
hacia arriba
Se pide modificar las siguientes 2 funciones, para que concuerden con la figura de laderecha.
pila_a pusha(tipo_elemento ele, pila_a pila){
if (sizea(pila) != MAX)
{
pila.tope ++;
pila.ele[pila.tope] = ele;
pila.tamano++;
}
else
printf("\nPila Llena\n");
return pila;pila_a popa(pila_a pila){
if (!isemptya(pila)) {
pila.tope--;
pila.tamano--;
}
else
printf("\nPila Vacia\n");
return pila;
}
}
pila.tope --;
pila.tope ++;
2
(30 Puntos)
3....
Regístrate para leer el documento completo.