Presentation is loading. Please wait.

Presentation is loading. Please wait.

Exercicios sobre a matéria da P3 de 2006.1 Listas, Árvores e Tabela de Dispersão.

Similar presentations


Presentation on theme: "Exercicios sobre a matéria da P3 de 2006.1 Listas, Árvores e Tabela de Dispersão."— Presentation transcript:

1 Exercicios sobre a matéria da P3 de Listas, Árvores e Tabela de Dispersão

2 ex_p3.c

3 int intervalo(Arv* a, int x1, int x2) { if (a==NULL) return 0; if (a->info>x2) { return intervalo(a->esq,x1,x2); } else if (a->info dir,x1,x2); } else { /* pertence ao intervalo */ return 1 + intervalo(a->esq,x1,x2) + intervalo(a->dir,x1,x2); }

4 hashAluno.c

5 int busca(Hash tab, char* nome) { int i = hash(nome); Aluno* p; for (p=tab[i];p!=NULL;p=p->prox) { if (strcmp(p->nome,nome)==0) return p->quant; } return -1; } int hash(char* nome) { int i,soma=0; for (i=0;nome[i]!=\0;i++) soma=(soma+nome[i])%N; return soma; }

6 lista2.c

7 struct lista { char nome[81]; float nota; struct lista* prox }; typedef struct lista Lista; Lista* insere (Lista* lst, char* nome, float nota) { Lista* novo=(Lista*) malloc(sizeof(Lista)); strcpy(novo->nome,nome); novo->nota=nota; novo->prox=lst; return novo; }

8

9 Lista* retira_ultimo(Lista* lst) { if (lst==NULL) return NULL; else{ Lista* ant=NULL; Lista* p=lst; while (p->prox!=NULL) { ant=p; p=p->prox; } free(p); if (ant!=NULL) { ant->prox=NULL; return lst; } else return NULL; }

10

11 int cheia(Arv* a) { if (a==NULL) return 1; if (a->esq==NULL&&a->dir==NULL) return 1; if (a->esq==NULL||a->dir==NULL) return 0; return cheia(a->esq)&&cheia(a->dir); }

12

13 int maximo(ArvGen* a) { if (a->prim==NULL) return a->info; else { int max=a->info; ArvGen* p; for (p=a->prim;p!=NULL;p=p->prox) { int mp=maximo(p); max=(max>mp)?max:mp; } return max; }

14

15 Lista* constroi(int n, int* v) { int i; Lista* head=NULL; for (i=0;iinfo=v[i]; novo->prox=head; head=novo; } return head; }

16

17 int soma_info_folhas (Arv* a) { if (a==NULL ) return 0; else if (a->esq==NULL&&a->dir==NULL) return a->info; else return soma_info_folhas(a->esq)+soma_info_folhas(a->dir); }

18

19 int num_nos_x(ArvGen* a,int x) { if (a->prim==NULL) return (a->info>x)?1:0; else { ArvGen* p; int n=(a->info>x)?1:0; for (p=a->prim; p!=NULL; p=p->prox) { n+=num_nos_x(p,x); } return n; }

20

21 void imprime (Arv* a) { if (!arv_vazia(a)){ imprime(a->esq); /* mostra sae */ printf("%d ", a->info); /* mostra raiz */ imprime(a->dir); /* mostra sad */ }

22

23 /* conta o numero de nos ate o nivel n */ int conta (Arv* a, int n) { if (a==NULL || n==-1) return 0; else return 1+conta(a->esq,n-1)+conta(a->dir,n-1); }

24

25 void imprime (ArvGen* a) { ArvGen* p; printf(" info); for (p=a->prim; p!=NULL; p=p->prox) imprime(p); /* imprime cada sub-árvore filha */ printf(">"); }


Download ppt "Exercicios sobre a matéria da P3 de 2006.1 Listas, Árvores e Tabela de Dispersão."

Similar presentations


Ads by Google