16.05.2014 Views

5 lista de exercícios - UTFPR

5 lista de exercícios - UTFPR

5 lista de exercícios - UTFPR

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5 a Lista <strong>de</strong> <strong>exercícios</strong> <strong>de</strong> Algoritmos e Estruturas <strong>de</strong> Dados - Curso: Engenharia <strong>de</strong><br />

Computação<br />

Nome do aluno:<br />

Métodos <strong>de</strong> or<strong>de</strong>nação<br />

1) Mostre os passos <strong>de</strong> or<strong>de</strong>nação do método bolha para or<strong>de</strong>nar o seguinte conjunto <strong>de</strong> elementos<br />

32 12 0 3 11 7 4<br />

2) Repita o processo para mostrar como seria para o caso do método inserção, seleção e quicksort.<br />

3) Escreva a função or<strong>de</strong>na_insercao que or<strong>de</strong>na um vetor utilizando o método <strong>de</strong> inserção.<br />

1 void or<strong>de</strong>na_insercao ( int v[] , int tamanho_do_vetor )<br />

2 {<br />

3 }<br />

4 int main ( void )<br />

5 {<br />

6 int meu_vetor []={23 , 45 , 65 , 12 , 3, 109 , 33 , 32};<br />

7 or<strong>de</strong>na_insercao ( meu_vetor , 8);<br />

8 }<br />

Utilização <strong>de</strong> bibliotecas<br />

4) Crie um exemplo <strong>de</strong> programa C que utiliza vários arquivos fonte. Crie os arquivos .h <strong>de</strong> cada um<br />

<strong>de</strong>stes, mostre com o é realizada a compilação <strong>de</strong> cada arquivo e como juntar todos os arquivos num<br />

executável. Mostre como seria o arquivo Makefile para este seu exemplo.<br />

5) Modifique o exercício 3 para criar uma biblioteca e mostre como “linkar” o seu programa .c com<br />

o código da biblioteca e criar um executável.<br />

<strong>lista</strong>s enca<strong>de</strong>adas<br />

6) Crie uma <strong>lista</strong> enca<strong>de</strong>ada para representar uma agenda telefônica e crie as operações: inicializa,<br />

insere, remove e mostra_todos. Realize alguma operações <strong>de</strong>stas para testar seu programa C.<br />

7) Crie a função C chamada sortedMerge (L1, L2, &L3) que junta os elementos das <strong>lista</strong>s<br />

enca<strong>de</strong>adas L1 e L2 e coloca-os em L3.<br />

7.1) Assuma que os elementos <strong>de</strong>ntro <strong>de</strong> L1 estão or<strong>de</strong>nados em or<strong>de</strong>m crescente, assim como os <strong>de</strong><br />

L2.<br />

7.2) Resolva o mesmo problema, mas agora permitindo que os elementos <strong>de</strong> L1 e L2 não estejam<br />

or<strong>de</strong>nados e <strong>de</strong>sejando que os elementos <strong>de</strong> L3 fiquem em or<strong>de</strong>m crescente.<br />

8) Crie uma <strong>lista</strong> enca<strong>de</strong>ada para representar uma agenda telefônica e crie as operações: inicializa,<br />

insere, remove e mostra_todos. Realize alguma operações <strong>de</strong>stas para testar seu programa C.<br />

9) Crie uma <strong>lista</strong> duplamente enca<strong>de</strong>ada (para armazenar números) que possua função <strong>de</strong> inserção<br />

1


em or<strong>de</strong>m crescente. Implemente as : inicializa, insere, remove e mostra_todos. Realize alguma<br />

operações <strong>de</strong>stas para testar seu programa C.<br />

10) Consi<strong>de</strong>re a seguinte sequencia numérica: 20 , 22 , 10 , 2 , 12 que obe<strong>de</strong>cem a seguinte regra<br />

(acompanhe pela figura): Quando o elemento 20 foi inserido a <strong>lista</strong> estava vazia. Depois quando o 22<br />

foi inserido, como o 22 é maior do que o elemento 20 ele foi colocado a direita. Depois o valor 10 foi<br />

inserido e como 10 é menor do que o 20, ele foi inserido ao lado esquerdo. O número 2 é menor do<br />

que o 20, entao foi inserido do lado esquerdo (mas ja existe o 10). Assim, comparando com o valor<br />

10 temos que 2 é menor e <strong>de</strong>ve ser inserido ao lado direito. Já o 12 é menor do que 20 e <strong>de</strong>ve ser<br />

inserido a esquerda, mas comparando-se com o valor 10 ele é maior e <strong>de</strong>ve ser inserido a direita. Crie<br />

um Tipo Abstrato <strong>de</strong> Dados para representar os números inteiros, ponteiros para esqerda/direita e<br />

anterior, etc. Crie funções insere_elemento e mostrar_todos.<br />

inicio<br />

NULL<br />

qtd<br />

20<br />

10<br />

2 12<br />

NULL<br />

22<br />

NULL<br />

NULL<br />

NULL<br />

NULL<br />

NULL<br />

Pilhas com alocação enca<strong>de</strong>ada<br />

10) Crie uma pilha utilizando alocação dinâmica <strong>de</strong> memória e implemente as função necessárias para<br />

empilhar e <strong>de</strong>sempilhar elementos.<br />

11) Crie uma função Inverte_pilha que inverte o conteúdo <strong>de</strong> uma pilha. Utilize uma ou mais<br />

pilhas auxiliares para criar esta função.<br />

Filas com alocação enca<strong>de</strong>ada<br />

12) Crie uma fila utilizando alocação dinâmica <strong>de</strong> memória e implemente as função necessárias para<br />

enfileirar e <strong>de</strong>senfileirar elementos.<br />

11) Crie uma função Inverte_pilha que inverte o conteúdo <strong>de</strong> uma pilha. Utilize uma fila auxiliar<br />

para criar esta função.<br />

2

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

Saved successfully!

Ooh no, something went wrong!