Buscar

provas av

Prévia do material em texto

1. 
 
 
Uma lista linear implementada através de encadeamento deve apresentar obrigatoriamente: 
i) um ponteiro para o primeiro nó da lista; 
ii) encadeamento entre os nós, através de algum campo de ligação; 
iii) não deve haver uma indicação de final da lista; 
iv) um ponteiro para o final da lista. 
Levando em consideração as afirmações apresentadas, qual das alternativas é a correta? 
 
 
somente a afirmação i esta correta. 
 
as afirmações i, ii e iii estão corretas. 
 
as afirmações ii e iv estão corretas. 
 
as afirmações i e ii estão corretas. 
 
somente a afirmação iv esta correta. 
 
 
 
2. 
 
 
O conceito de ponteiros foi estudado em uma de nossas aulas. Sendo assim, leia 
atentamente as afirmativas abaixo e assinale a opção correta. 
 
I A variável ponteiro não precisa ser declarada. 
II A variável ponteiro armazena endereço. 
III Quanto se usa &nomeDaVariávelPonteiro com o comando cout, é exibido o 
endereço da variável apontada pela variável ponteiro. 
IV Quando se usa nomeDaVariávelPonteiro com o comando cout, é exibido o 
endereço da variável ponteiro. 
V Quando se usa *nomeDaVariávelPonteiro com o comando cout, é exibido o 
conteúdo da variável apontada pela variável ponteiro. 
 
 
I IV e V estão corretas 
 
II e V estão corretas 
 
IV e V estão corretas 
 
Somente a II está correta 
 
I, II e IV estão corretas 
 
 Gabarito Comentado 
 
 
3. 
 
 
Em uma aplicação que usa processos de alocação estática e dinâmica de memória é correto afirmar 
que 
 
 
Todas as afirmações acima são incorretas 
 
Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução da 
aplicação 
 
Toda a memória utilizada pela aplicação não muda durante toda a sua execução 
 
A memória utilizada pela aplicação é totalmente alocada após o inicio de sua execução 
 
A memória utilizada pela aplicação é inicialmente estática, mas pode mudar 
 
 Gabarito Comentado 
 
 
4. 
 
 
Em algumas situações, principalmente na utilização de listas, há a necessidade de posicionar o 
ponteiro em determinado local da lista. Dessa forma, analisando o trecho de código abaixo, que 
mostra uma função, assinale a alternativa correta que descreve o objetivo desta. Sabe-se que o sinal 
de asterisco (*) sinaliza um ponteiro. 
void funcao (Nodo **P){ 
 if ( *P != NULL ){ 
 while ( (*P) -> Anterior != NULL ) 
 *P= (*P) -> Anterior; 
 } 
} 
 
 
Posicionar o ponteiro no final da lista 
 
Posicionar o ponteiro no início da lista 
 
Posicionar o ponteiro no meio da lista 
 
Colocar o valor NULL em todos os ponteiros 
 
Posicionar o ponteiro onde houver o valor NULL 
 
 Gabarito Comentado 
 
 
5. 
 
 
Para simular uma lista encadeada simplesmente pode se utilizar as estruturas de ponteiros. Como 
pode ser definida uma estrutura do tipo ponteiro? 
 
 
Um objeto que contém um endereço de memória. 
 
Uma estrutura que aponta para um objeto de arquivo. 
 
Um objeto que não contém endereço de memória. 
 
Uma estrutura utilizada apontar erros de operações. 
 
Um objeto que armazena dado diretamente na memória. 
 
 Gabarito Comentado 
 
 
6. 
 
 Tenho uma lista não ordenada de clientes em que registro apenas a matrícula, 
o nome, o endereço e o telefone de cada cliente. Como não tenho limites para 
o crescimento da minha lista, como posso implementar a inserção de um novo 
cliente na lista, sabendo que cada cliente é do tipo Cliente e a lista é do tipo 
Lista assim definidos : 
struct Cliente { 
 long int matricula; 
 
 string nome, endereco, tel; 
}; 
struct Lista { 
 Cliente c; 
 struct Lista *link; 
 }; 
 
 
Lista insereCliente(Lista *p, Cliente cl) 
{ 
 Lista novo[]; 
 novo[0].c = cl; 
 novo[0].link = p; 
 return novo; 
} 
 
 
Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo ; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo.c = cl; 
 novo.link = p; 
 return novo; 
} 
 
Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
Lista * insereCliente(Lista *p) { 
 Lista *novo = new Lista; 
 Cliente cl; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
 Gabarito Comentado 
 
 
7. 
 
 
As structs (estruturas) são utilizadas para modelar os nodos de estruturas dinâmicas como, por 
exemplo, as listas encadeadas, seja o seguinte exemplo de nodo de uma lista de produtos: struct 
nodo{ float valor; string produto; nodo * proximo; }; Suponha que um determinado ponteiro pt esteja 
apontando para um nodo desta lista, e que se queira alterar o conteúdo do campo valor deste nodo, 
que está sendo apontado por pt, para 5.60. Marque a alternativa que corretamente possibilita esta 
operação: 
 
 
pt->5.60; 
 
pt.valor->5.60; 
 
pt->valor=5.60; 
 
pt->próximo.valor=5.60; 
 
pt->próximo->valor=5.60; 
 
 Gabarito Comentado 
 
 
8. 
 
 
Marque a afirmativa que represente uma concatenação em listas. 
 
 
Alterar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante. 
 
Intercalar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
Organizar os dados da lista em ordem crescente ou decrescente. 
 
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende 
da necessidade. 
 
 Gabarito Comentado

Continue navegando

Outros materiais