Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
UNIVERSIDADE FEDERAL DE JUIZ DE FORA - INSTITUTO DE CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO 2º TVC de Laboratório de Programação II – 22/10/2012 ALUNO (A) __________________________________________________________________________ Turma:______ (1) Considerando as definições do TAD Pilha e dado o programa abaixo, indique exatamente o que será impresso (a ordem importa!). Considere as funções Pilha* cria_pilha(void) e int vazia_pilha(Pilha *p) implementadas. (30 pontos) struct no { int info; struct no *prox; }; typedef struct no No; struct pilha { No *topo; }; typedef struct pilha Pilha; void func1(Pilha *p, int v) { No *q = (No*) malloc(sizeof(No)); q->info = v; q->prox = p->topo; p->topo = q; } int func2(Pilha *p) { No *q = p->topo; int v = q->info; p->topo = q->prox; free(q); return v; } void func3(Pilha *p) { No *q = p->topo; while(q != NULL){ printf("%d ", q->info); q = q->prox; } printf("\n"); } int main() { int i; Pilha *p1 = cria_pilha(); Pilha *p2 = cria_pilha(); for(i = 12; i < 25; i++) { if(i % 2 == 0) func1(p1, i); else if(i % 3 == 0) func1(p2, i); } printf("P1: "); func3(p1); printf("P2: "); func3(p2); while(!vazia_pilha(p1)) { int v = func2(p1); if(v % 4 == 0) func1(p2, v); } printf("P1: "); func3(p1); printf("P2: "); func3(p2); return 0; } (2) Considerando as definições abaixo do TAD Fila, desenvolver (i) a função básica de enfileiramento (dada uma fila e um valor x, inserir x na fila), (ii) uma função para criar uma nova fila apenas com os elementos pares e (iii) uma função para intercalar duas filas (os elementos de cada fila passada como parâmetro são inseridos na nova fila alternadamente). Nas letras b) e c), a nova fila deve ser independente das filas originais. Considere que a função Fila* criaFila() já está implementada. (30 pontos) struct no { int info; struct no *prox; }; typedef struct no No; struct fila { No *inicio; No *fim; }; typedef struct fila Fila; Protótipos: a) void enfileira(Fila *f, int x); (10) b) Fila* criaFilaPares(Fila *f); (10) c) Fila* intercala(Fila *f1, Fila f2); � � (3) Abaixo encontra-se a definição do tipo que implementa o TAD Árvore Binária de Busca. Desenvolver um procedimento para imprimir o maior valor da árvore. Além disso, desenvolver uma função que retorna a quantidade de alunos com notas no intervalo fechado [50, 80] (atenção à propriedade fundamental das ABBs) e uma função que retorna a soma dos nós que formam o caminho que vai da raiz até um nó que contenha o valor contido na variável x (Dica: não use recursividade). (40 pontos) struct abb { int valor; struct abb *esq; struct abb *dir; }; typedef struct abb Abb; Protótipos: a) void imprimeMaior(Abb *a); (1oids1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 1�� PAGE \*Arabic 10) b) int contaNotas(Abb *a); (15) c) int somaNosCaminho(Abb *a, int x); � �