13.04.2013 Views

texto - Decom - Ufop

texto - Decom - Ufop

texto - Decom - Ufop

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Universidade Federal de Ouro Preto – UFOP<br />

Instituto de Ciências Exatas e Biológicas – ICEB<br />

Departamento de Computação – DECOM<br />

Disciplina: Algoritmos e Estruturas de Dados I – CIC102<br />

Professor: David Menotti (menottid@gmail.com)<br />

3. (0,6 pontos) Considere uma árvore estritamente binária e quase completa, composta por<br />

um ponteiro para o nó raiz, onde cada nó é composto por um valor inteiro e ponteiros para<br />

os nós direito e esquerdo, como os TADs apresentados abaixo:<br />

typedef struct Tarvore<br />

{<br />

TNo *pRaiz;<br />

} TArvore;<br />

typedef struct TNo<br />

{<br />

int valor;<br />

TNo *pEsq;<br />

TNo *pDir;<br />

} TNo;<br />

Construa uma função em C/C++ que receba dois valores inteiros e um ponteiro para árvore<br />

estritamente binária e quase completa, e então insira os dois novos nós (representados pelos<br />

valores inteiros recebidos) na árvore de forma que ela continue sendo uma árvore<br />

estritamente binária e quase completa. Obs: caso a árvore esteja vazia somente um dos<br />

valores deverá ser inserido na árvore, de forma que ela continue sendo estritamente binária e<br />

quase completa. Caso seja necessário usar outras estruturas de dados como pilhas, filas e<br />

listas, considere que elas já estão implementadas.<br />

4. (0,6 pontos) Considere uma matriz composta por valores 1 e 0 representando uma imagem<br />

binária (ponto branco valor 0, ponto preto valor 1) como ilustrado na figura abaixo.<br />

unsigned char img[10][10] = {<br />

{0,0,1,1,0,0,0,0,0,0},<br />

{0,1,0,0,0,1,0,0,0,0},<br />

{0,1,0,1,1,0,0,0,1,0},<br />

{0,1,0,0,1,0,1,0,0,0},<br />

{0,1,1,0,1,0,1,1,0,0},<br />

{0,0,0,0,1,0,0,1,0,0},<br />

{0,0,1,0,1,0,1,1,1,0},<br />

{0,0,1,1,1,0,0,1,0,1},<br />

{0,0,0,0,0,0,1,1,0,0},<br />

{0,0,0,0,0,0,1,0,0,0} };<br />

A matriz/imagem apresentada acima/esquerda contém quatro regiões (uma com 7 pontos,<br />

duas com 11 pontos e uma última com um único ponto). Construa uma função em C/C++,<br />

que determine (e retorne) o número de regiões existentes em uma matriz/imagem. Uma<br />

sugestão para a definição (protótipo) da função é:<br />

Considere os TADs definidos abaixo,<br />

typedef struct TPonto<br />

{<br />

int x,y;<br />

struct TPonto* pstProx;<br />

} TPonto;<br />

int Regiao(TMatriz* pImagem);<br />

typedef struct TMatriz<br />

{<br />

int m,n;<br />

unsigned char** Matriz;<br />

} TMatriz;<br />

Também considere que funções de pilhas e filas já estão implementados para o TAD<br />

TPonto. Ainda considere que existem funções para criar, liberar e «zerar» o TAD TMatriz.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!