Académique Documents
Professionnel Documents
Culture Documents
DE IA
OR E
RI DE CA
CI
Ê
E CA BO
LI
N
SU
C
B
VE
IAS
PÚ
UTO
R DE
RE
DO M
I NSTI T
AR
SED MARIBUS
DECEM UNA
GRUPO I
1. Considera a seguinte definição para a estrutura de dados necessária à implementação dinâmica de uma
lista de inteiros em Linguagem C:
struct no {
int valor;
struct no *seguinte;
};
typedef struct no elemento;
a) int ValorUltElemento (lista p) – que recebe uma lista e retorna o valor do elemento da última posição
da lista. Se a lista for vazia o valor retornado será -1.
SOLUÇÃO:
int ValorUltElemento(lista p){
lista q = (lista)malloc(sizeof(elemento));
q = p;
if(q==NULL)
return -1;
while(q->seguinte!=NULL) {
q = q->seguinte;
}
return q->valor;
}
b) void RemoveElemento (lista p, int n) – que dada uma lista e um inteiro n, remove o primeiro elemento
com valor igual a n da lista. Se não existir nenhum nó com valor n, nenhum nó será removido.
SOLUÇÃO:
void RemoveElemento(lista p, int n){
lista q = (lista)malloc(sizeof(elemento));
lista r = (lista)malloc(sizeof(elemento));
ENG EN HA R
DE IA
OR E
RI DE CA
CI
Ê
E CA BO
LI
N
SU
C
B
VE
IAS
PÚ
UTO
R DE
RE
DO M
I NSTI T
AR
SED MARIBUS
DECEM UNA
q = p;
r = p;
while(r!=NULL) {
if(q->valor==n) {
q->seguinte = r->seguinte;
free(r);
}
q = r;
r = r->seguinte;
}
}
c) void InsereNoInicio (lista p, elemento x) – que, recebendo uma lista e um elemento x, insere x na
primeira posição da lista.
SOLUÇÃO:
void InsereNoInicio(lista p, elemento x) {
lista q = (lista)malloc(sizeof(elemento));
q = p;
if(p==NULL) {
p = &x;
p->seguinte = NULL;
}
else {
x.seguinte = p;
p = &x;
}
}
d) int ValorMaximo (lista p) – que retorna o maior valor de entre os valores de todos os elementos da
lista.
SOLUÇÃO:
int ValorMaximo(lista p) {
q = p;
while(q!=NULL){
if(q->valor > max){
max = q->valor;
}
q = q->seguinte;
}
return max;
}
ENG EN HA R
DE IA
OR E
RI DE CA
CI
Ê
E CA BO
LI
N
SU
C
B
VE
IAS
PÚ
UTO
R DE
RE
DO M
I NSTI T
AR
SED MARIBUS
DECEM UNA
GRUPO II
SOLUÇÃO: A seguir apresenta-se o conjunto de operações executadas sobre a pilha para calcular o valor
da expressão. Apresenta-se o estado da pilha logo após a execução de cada operador.
É claro que a expressão não foi calculada completamente, uma vez que falta pelo menos um operador. O
importante era aplicar os operadores sobre os elementos da pilha pela mesma ordem de prioridade em que
aparecem na expressão.
3. Considera que foram inseridas numa pilha, inicialmente vazia, a seguinte sequência de valores, por esta
ordem: 22 81 54 73 98 21 29 10 3 45 60. Apresenta o conjunto mínimo de operações necessárias para
retirar o valor 81 da pilha. Justifica.
SOLUÇÃO: Dada a sequência de valores inseridos na pilha, a pilha se encontra no seguinte estado:
ENG EN HA R
DE IA
OR E
RI DE CA
CI
Ê
E CA BO
LI
N
SU
C
B
VE
IAS
PÚ
UTO
R DE
RE
DO M
I NSTI T
AR
SED MARIBUS
DECEM UNA
Antes de retirar o valor 81 da pilha é necessário retirar todos os elementos que se encontram acima do
81 ou seja, todos os valores inseridos antes do 81. Uma vez que estão 9 valores acima do 81, serão
necessários 10 operações de pop() para retirar o valor 81 da pilha (9 para retirar os valores que se
encontram acima e 1 para retira o valor 81).
GRUPO III
SOLUÇÃO: Árvore em que cada nó tem no máximo dois filhos e que, para cada nó, o módulo da diferença
entrte o número de descendentes à esquerda e o número de descendentes à direita nunca é superior a um.
5. Dá exemplo de uma árvore binária de profundidade 5, cujos nós têm os seguintes valores: 31 70 44 19
20 8 15 69 14 60 54 16 81 4.
Foi pedido um exemplo de uma árvore binária de profundidade 5. Então, o objectivo é povoar a árvore,
fazendo-a crescer, de modo que um nó nunca tenha mais de dois filhos ( árvore binária) e atinja a
profundidade 5 (não deve ultrapasar essa profundidade). Não era necessário ordenar os nós nem
ENG EN HA R
DE IA
OR E
RI DE CA
CI
Ê
E CA BO
LI
N
SU
C
B
VE
IAS
PÚ
UTO
R DE
RE
DO M
I NSTI T
AR
SED MARIBUS
DECEM UNA
equilibrar a árvore. Aliás, quem equilibrou a árvore de certeza que não conseguiu alcançar a
profundidade 5 e, como é óbvio, o exemplo de nada valeu.
7. Que alterações faria ao algoritmo de percurso em Pos-Ordem de modo a gerar a seguinte sequência de
saída: IHGFEDCBA? Apresenta o algoritmo modificado.
GRUPO III
8. Faz uma simulação dos seguintes algoritmos de ordenação sobre as respectivas sequências de valores
inteiros. Lembra-se de apresentar as sequências resultantes para cada passo do algoritmo.
SOLUÇÃO:
ENG EN HA R
DE IA
OR E
RI DE CA
CI
Ê
E CA BO
LI
N
SU
C
B
VE
IAS
PÚ
UTO
R DE
RE
DO M
I NSTI T
AR
SED MARIBUS
DECEM UNA
SOLUÇÃO:
Para este exercício, os interessados terão de procurar a solução em livros ou outras fontes, uma vez
que se trata de uma matéria que seria dada numa aula que não cehgou a decorrer. Aliás, numa aula
anterior a essa foi feita uma introdução esta matéria.
c) BubbleSort (44 23 60 11 9)
SOLUÇÃO:
ENG EN HA R
DE IA
OR E
RI DE CA
CI
Ê
E CA BO
LI
N
SU
C
B
VE
IAS
PÚ
UTO
R DE
RE
DO M
I NSTI T
AR
SED MARIBUS
DECEM UNA
SOLUÇÃO: