Buscar

Resumo - Estrutura de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ESTRUTURA DE DADOS
AULA 1
A forma correta para imprimir o valor do último elemento de um vetor v com n posições é:
cout << v[n-1];
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória:
Lista Sequencia
As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação de dados associados a estas estruturas. 
Verifique as seguintes sentenças:
I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados.
II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados.
III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados.
IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados.
Marque a alternativa CORRETA:
As alternativas I e II estão corretas
As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação dados associados a estas estruturas. Verifique as seguintes sentenças:
I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados.
II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados.
III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados.
IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados.
Marque a alternativa CORRETA:
As alternativas I e II estão corretas
Assinale a alternativa correta sobre tipos abstratos de dados:
Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores definidos sobre esses dados	
Das estruturas de dados a seguir aquela que NÃO é uma estrutura linear é 
Grafo
Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas. Dessa forma a definição de Estrutura de Dados está expressa na alternativa:
É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente.
É um exemplo de TAD Não Linear:
Grafos
Estão entre algumas das possíveis formas de estruturas de dados:
Árvores binárias, pilhas, vetores
Estão entre algumas das possíveis formas de se estruturar dados:
Grafos, lista ordenada, vetores.
Leia com atenção as afirmativas abaixo e assinale a resposta correta.
I A estrutura de dados que melhor representa os diretórios ou pastas de arquivos do computador é a árvore. 
II A estrutura de dados FILA é não linear assim como o Grafo. 
III O termo folha em uma estrutura de dados é usado para um nó sem filhos e que tem grau 0, 
IV O grau de uma árvore é definido pelo número de subárvores de um nó. 
V O grafo é uma estrutura de dados que tem limitação para o número de vértices. 
VI Uma das aplicações da estrutura de dados grafo é a Computação Gráfica.
I, III, IV e VI são afirmativas verdadeiras
O que é estrutura de dados?
É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente
Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso que farão, de cidade a cidade. Qual a estrutura de dados mais adequada para modelar este problema?
Grafo
Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução assinale a alternativa que representa a resposta final.
cin >> a;
cin >> b;
cin >> c;
cin >> d;
cout << a;
cout << b;
cout << c;
cout << d;
cout << d;
cout << c;
cout << b;
cout << a;
Após a impressão dos valores pela ordem teremos uma fila e uma pilha.
Para organizar as fotos de minha família com os ancestrais de várias gerações, minha filha usou uma estrutura de dados que é .....  Assinale a opção certa.
Árvore
Podemos dizer que estrutura de dados é:
O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações.
Preciso cadastrar todos os interessados em meu novo curso de programação. Qual a estrutura de dados mais adequada para modelar este problema, visto que não há qualquer preocupação com ordem de chegada ou saída de aluno da turma.
Lista
Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa.  A estrutura de dados mais adequada para armazenar tudo que preciso levar é ...
Lista
Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos de um sistema operacional?
Árvore
ESTRUTURA DE DADOS
AULA 2
A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo assim, qual das situações abaixo representa melhor o conceito das variáveis globais
Ao modificar o valor da variável 'X' na função "modifica" seu valor modificado poderá ser apresentado em qualquer outra função do programa.
Ao definirmos uma função, podemos afirmar:
I Toda função tem parâmetros
II Quando nada retorna, o tipo é void
III Quando todos os parâmetros são do mesmo tipo, é suficiente usar o tipo uma vez e separar os nomes dos parâmetros por vírgulas
IV  Na passagem por valor, o endereço da variável da função chamadora é passado para a função chamada
Após uma análise das afirmativas acima, escolha a opção correta.
Somente II está correta
Assinale a opção certa.
Quando não se escreve o protótipo de uma função ..
É preciso definir a função antes do programa principal
Assinale a opção CORRETA.  O protótipo da função que permitirá calcular o volume de um paralelepípedo com medidas a, b e c  de acordo com o trecho da  chamada  :     cout << "Volume  =   "  <<  volume(a,b,c)
float  volume (float, float, float);
Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil manutenção. Portanto, utiliza-se a tecnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica, também chamada de modularização, tem como principal elemento:
As Funções
Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil manutenção. Portanto, utiliza-se a tecnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica, também chamada de modularização, tem como principal elemento:
As funções
Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-se a técnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica tem como principal elemento:
As Funções
Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então:
Essa passagem é "por referência"
Considere a função abaixo:
int func (int a, int& b){
   a = b - a;
   b = a * 2;
   a = b * 2;
   return a;
}
Considere o seguinte código na função main:
    int x = 2, y = 3, z;
    z = func (x, y);
    cout << x << "; " << y << "; " << z;
O que será impresso?
2;2;4
Considere a função abaixo:
void func (int a, int &b) {
    a++;
    b = a*2;
}
e o seguinte trecho de código na função  main :
int x=2, y=3;
func (x,y);
func (y,x); 
cout << x << "  ;  " << y;
Após a execução do cout o que será impresso
14; 6
Considere a função Adivinhe , n  =  4 e que X é formadopela sequência "algoritmo".  Assinale a opção que corretamente mostra o vetor Y ao fim da execução da função  Adivinhe.
void Adivinhe (char X[ ], char Y [ ], int n)  {
    int i, j;
    j = 0;
    for ( i = n; i >= 0; i--)
    {
        Y[j] = X[i];
        j++;
    }
    Y[j] = '\0';
}
Rogla
Considere a seguinte função: void dobro(int x) { x = 2 * x; } Qual valor será impresso na tela quando o seguinte programa principal for executado? int main() { int n = 3; n = n + 2; dobro(n); cout << n; return 0; }
5
Considera a FUNÇÃO abaixo:
void inverte(int &x, int &y)
{ int aux = x;
x = y;
y = aux; }
Quais valores serão impressos na tela quando o seguinte programa principal for executado?
int main()
{ int a = 18, b = 28;
inverte(a, b);
cout << a <<" e "<< b;
return 0; }
28 e 18
Considere a função abaixo:
void func (int a, int &b) {
    a++;
    b = a*2;
}
e o seguinte trecho de código na função  main :
int x=2, y=3;
func (x,y);
func (y,x); 
cout << x << "  ;  " << y;
Após a execução do cout o que será impresso
14; 6
Considere a função: 
void dobro(int x) { 
      x = 10 * x; 
} 
Qual será o valor impresso na tela quando o programa principal for executado? 
int main() { 
int n; 
n = 5; 
dobro(n); 
cout << n; 
return 0; 
} 
5
Considere a função a seguir e a chamada da mesma efetuada no programa principal abaixo. Indique a opção que contem o que será impresso.
int executar (int x, int &y) {
    x = y * 2;
    y = ++x;
    return x + y;
}
int main () {
int a=2, b=2, c=2;
c = executar (a, b);
cout << a << ", " << b << ", " << c;
}
2, 5, 10
Considere as seguintes afirmativas :
I) Os vetores em C++, quando passados como parâmetros de funções,  são obrigatoriamente passados "por valor" e não "por referência".
II) Variáveis globais são um recurso adequado para troca de informações entre funções distintas.
III) Caso uma função necessite retornar mais de um valor ao programa que a chamou, deve fazê-lo usando parâmetros passados "por valor".
As afirmativas corretas são:
Nenhuma está correta.
Considere as seguintes afirmativas :
I) Os vetores em C++, quando passados como parâmetros de funções,  são obrigatoriamente passados "por valor" e não "por referência".
II) Variáveis globais são um recurso adequado para troca de informações entre funções distintas.
III) Caso uma função necessite retornar mais de um valor ao programa que a chamou, deve fazê-lo usando parâmetros passados "por valor".
As afirmativas corretas são:
Nenhuma está correta.
Considere o trecho de um programa escrito em C++.
int func1 (int vtx[], int tam) {
    int soma=0;
    for (int i=0 ; i < tam; i++) {
        if (i % 2 !=0)
             soma += vtx[i];     
    }
    return soma;
}
int main() {
    int vt[5] = {10,20,30,40,50};
    cout << func1 (vt,5);
}
Marque a opção correta que mostra o que é impresso na tela
60
Considere o trecho de um programa escrito em C++ : 
int func1 (int n1, int n2) {
    int soma=0;
    for (    ; n1 < n2 ; n1 +=  2) {
         soma +=  n1;
     }
    return soma;
}
main() {
    cout << func1(1.20);
}
Marque a opção correta que mostra o que é impresso na tela
100
Considere o trecho de um programa escrito em C++ : 
long func1 (int n1) {
   int ft=1, i = 1;
   while ( i <= n1) {
         ft *= i;
         i++;
   }
   return ft;
}
main() {
    cout << func1 (5);
}
Marque a opção correta que mostra o que é impresso na tela
120
Diga, para o trecho do programa abaixo, qual a opção que representa a saída em tela.  Considere que o programa será compilado sem erros e irá executar também sem problemas .
void troca (int x, int y){
   int tmp;
   tmp = y;
   y = x;
   x = tmp;
}
int main( ) {
   int a = 13, b = 10;
   troca( a, b );
   cout<<"Valores: "<< a<<"\t"<< b<<< endl;
   system("pause");
}
Valores: 13 10
Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu nome e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os valores para os parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço enviado. Quando se envia o endereço estamos ativando a função por meio de:
Ponteiros
Na passagem por ____________________ , o endereço da variável da função chamadora é passado para a função chamada e, dessa forma, o valor poderá ser alterado, ou não
referência
No programa abaixo em C++, que sequência de valores serão impressos ? int x; x = 15; if (x > 0) { int x; x = 25; cout << x << endl; } cout << x << endl;
25 E 15
No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r, respectivamente. 
#include 
using namespace std; 
int x, y; 
float media( float a, float b ) 
{ float tmp; 
tmp = (a + b ) / 2.0; 
return ( tmp ); 
} 
int main() 
{ 
float r; 
cout<<"Informe 2 valores: "; 
cin>>x>> y; 
r = media( x, y ); 
cout<<"\nMedia = "<< r<<"\n"; 
system ("pause"); 
}
( ) área de dados globais / área de pilha
Para compararmos vetores de char, usaremos a função _____________________ . Para copiarmos o conteúdo de um vetor de char nas posições ocupadas por outro vetor de char, usaremos a função ______________________ .
strcmp(); e strcpy();
Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro parâmetro e por referência um inteiro como segundo parâmetro. Qual das respostas abaixo poderia representar o protótipo dessa função:
int func (int a, int &b);
ESTRUTURA DE DADOS
AULA 3
Em C++, quando uma variável é declarada como uma struct, o acesso para atribuição e leitura dos membros (campos) deste registro se dá pelo operador :
. (Ponto)
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada".
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
Marque a opção correta, considerando 
struct Livro { 
int codigo; 
float preco; 
} liv;
liv.preco = 30.70;
Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a recuperação posterior de itens de conjuntos ordenados. Existem vários métodos de ordenação, por este motivo, marque corretamente a alternativa que apresenta o código do método de seleção.
int ordena(float v[], float valor, int n) {
 int ini = 0, fim = n-1, meio;
   while (ini >= fim){
     meio = ini/2;
     if (v[meio] == valor)
       return meio;  
     if (valor < v[meio])
       fim = meio -1;
     else
       ini = meio+1;
}
	void ordena(int v[], int n){ 
int i, j, menor, aux; 
for (j = 0; j < n-1; j++) { 
    for (i = j+1; i < n; i++) { 
         if (v[i] < v[j]) { 
             aux = v[j]; 
             v[j] = v[i]; 
             v[i] = aux; 
        } 
    } 
} 
} 
	
	
	
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados sob uma lógica e associados por um nome.
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma estrutura como:
 struct aluno {
 string nome;
 float nota;
};
Suponha ainda que exista um vetor desta estrutura, definido como:
 aluno vet [ 100];
 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float media; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 10]; Marque a alternativa em que é atribuída de forma correta a media 6.0 para o quarto elemento deste vetor.
vet[3].media=6.0;
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro elemento deste vetor.
vet[10].nota=5.7;
Qual das seguintes estruturas de dados é classificada como heterogênea?
Registro
ESTRUTURA DE DADOS
AULA 4
"Algoritmo de ordenação por trocas  que varre um vetor um certonúmero de vezes, comparando os elementos vizinhos dois a dois. A cada varredura, se o par de elementos está em ordem crescente, nada é feito, caso contrário os elementos do par são permutados". Esta definição está descrevendo o algoritmo de ordenação conhecido por :
BubbleSort
Analisando o trecho de código a seguir: 
inicio=0; 
fim= tamanho - 1;
meio=(inicio+fim)/2; 
while(procura != nomeVetor[meio] && inicio != fim)
{
  if(procura > nomeVetor[meio])            
   inicio=meio+1;
  else 
   fim=meio; 
  meio=(inicio+fim)/2;   
}
if(nomeVetor[meio]==procura)
 cout<<"\n....: "< < outroVetor[meio]<<endl;
else 
 cout<<"\nDado nao encontrado\n";</endl;
Pode-se afirmar que:
Trata-se da implementação do algortimo de busca binária
Analise o seguinte trecho de algoritmo de ordenação de dados, cujos elementos estão dispostos em um vetor de nome v com n elementos.
...
{
int i, j, aux;
for (j = 1; j < n; j++)
for (i=j; i > 0 && v[i-1]> v[i]; i--) { 
aux = v[i-1];
v[i-1] = v[i];
v[i] = aux;
} 
}
...
Assinale o método ao qual o trecho de algoritmo pertence.
Inserção
Caso seja empregada uma busca binária em uma lista sequencial ordenada com 2048 valores, qual seria o número máximo de comparações para encontrar um valor que esteja na lista
11
Considere a ordenação do vetor abaixo
Método da bolha (bubble sort)
Considere a seguinte função busca escrita em linguagem C++ :
bool busca(int vetor[ ], int n, int tam)
{
    int ini=0, mid;
    while (ini <= tam)
    {
         cout << " x ";
         mid = (ini + tam)/2;
         if (vetor[mid] == n)
             return true;
         else if (n > vetor[mid])
             ini = mid+1;
         else
             tam = mid-1;
    }
    return false;
}
Qual a quantidade total de impressões da letra x nas buscas pelos números n = 4, n = 2 e n = 0 no vetor [1,2,3,4,5,6,7,8], sendo tam = 7 ?
int vetor[] = {1,2,3,4,5,6,7,8};
busca(vetor, 4, 7);
busca(vetor, 2, 7);
busca(vetor, 0, 7)
6
Considere a função misterio e o trecho abaixo.
void misterio(int v[ ], int n) {     //n é o número de elementos de v
   int i, j, m, aux;
   for (j = 0; j < n-1; j++) {
        m = j;
        for (i = j+1; i < n; i++) {
             if (v[i] < v[m])
                    m = i;
        }
        aux  = v[j];
        v[j] = v[m];
        v[m] = aux;
	
   }
}
Trecho na main :        
int v[4] = {40,30,10,20};
misterio(v, 4);
Marque a  opção correta.  Como ficará o vetor após a execução da função misterio ?
10 20 30 40
Considere as afirmativas a seguir.
I. Uma forma muito simples de fazer uma busca em um vetor consiste em percorrer o vetor, elemento a elemento, para verificar se o elemento procurado é igual a um dos elementos do vetor.
II. A pesquisa sequencial é extremamente simples e eficiente quando o número de elementos do vetor for muito grande.
III. Na pesquisa binária, a cada interação do algoritmo o tamanho do vetor é dividido ao meio.
IV. A pesquisa binária funciona corretamente quanto o conjunto de dados estiver desordenado.
Assinale a alternativa correta
Somente as afirmativas I e III são corretas.
Com a utilização das estruturas de dados e seus tipos, em algumas situações é imprescindível a criação de funções que façam determinada verificação ou ação nestas estruturas. Dessa forma, analise a função abaixo e marque corretamente a alternativa que descreve as funcionalidades desta.
int funcao(float v[], float vl, int n)
{
   for (int i = 0; i < n; i++)
     if (v[i] == vl)
       return i;
   return -1;
}
Retorna a posição de v se o valor vl foi encontrado
Em relação à classificação do método de ordenação, assinale abaixo aquele que, durante o processo de ordenação, só usa a memória principal:
Ordenação Interna
Em uma pesquisa sequencial a lista deve estar?
Ordenada ou desordenada
Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa sequencial e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores independente destes estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados.
Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da busca sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos elementos do vetor até achar o que procuram ou definirem que o elemento não se encontra no vetor. Sendo assim marque a alternativa que expressa o número de testes realizados pela busca sequencial e o número de testes realizados pela busca binária, respectivamente, até encontrarem o 70.
6 e 2
Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em vetores, e requer acesso aleatório aos elementos desta estrutura e parte do pressuposto de que os dados do vetor estejam ordenados e utiliza a técnica de divisão e conquista comparando o elemento desejado com o elemento do meio do vetor. Esta técnica ainda verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. O algoritmo que utiliza esta metodologia é:
Pesquisa binária
Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. Marque a alternativa correta que cita o algoritmo cuja descrição é: "considera cada elemento uma vez inserindo-o em seu lugar correto entre os elementos que já estão em ordem". E o seu passo a passo pode ser descrito como: "o elemento é inserido entre os ordenados movendo-se os elementos maiores que ele uma posição para a direita e posteriormente inserindo-o na posição vaga"
Inserção
	Estude atentamente o código a segir: 
int deciframe(int v[ ], int tam, int e){ 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
m = ( i + f ) / 2; 
if ( v[m] == e ) { return m; } 
if ( e < v[m] ) { f = m - 1; } 
else { i = m + 1; } 
} 
return -1; 
} 
Sabendo que a chamada da mesma foi feita com os parâmetros: 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = -6 
 sabido que a mesma retornaria o valor -1, porque
	
	Porque ele não achou o elemento na coleção
Estude atentamente o código a segir: 
int deciframe(int v[ ], int tam, int e){ 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
m = ( i + f ) / 2; 
if ( v[m] == e ) { return m; } 
if ( e < v[m] ) { f = m - 1; } 
else { i = m + 1; } 
} 
return -1; 
} 
Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os seguintes valores, o que ela retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = 0
0
Marque a afirmativa correta para a "Busca ou pesquisa binária"
Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio. 
Marque a afirmativa correta para a "inserção incremental"
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
Nos métodos de ordenação interna, quais são aqueles classificados como tipo método simples?
Selection Sort, Insert Sort e Bubble Sort
O processo de rearranjar um conjunto de dados em uma ordem crescente ou decrescente é chamado de ordenação. Existem várias técnicas de ordenação, entretanto a técnica que procura o menor valor entre todos os elementos do vetor e troca-o pelo primeiro elemento; para os n - 1 elementos restantes, determinação do elemento de menor valor e troca pelo segundo elemento e assim sucessivamente, é chamado de:
Seleção
O resultado do concurso para o cargo de uma empresa está armazenado em um vetor, que contém em cada um de seus elementos o número de inscrição, o nome e a nota obtida pelo candidato. Este vetor está ordenado pelo número de inscrição. Para realização de uma consulta que, dado um número de inscrição, apresenta o nome e nota do candidato, um programador utilizou um algoritmo de busca que realiza sucessivasdivisões no vetor, comparando o número de inscrição procurado com o número de inscrição do candidato posicionado no meio do vetor. Se o candidato posicionado do meio do vetor tiver o número de inscrição igual ao número de inscrição procurado, a busca termina com sucesso. Caso contrário, se candidato posicionado do meio do vetor tiver número de inscrição menor que o procurado, então a busca continua na metade posterior do vetor. E finalmente, se candidato posicionado do meio do vetor tiver número de inscrição maior que o procurado, a busca continua na metade anterior do vetor. O algoritmo utilizado pelo programador trata-se do método denominado busca:
Binária
O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação? 
void ordenar(float v[], int n) // n é o no. de elementos em v 
{
 int i , // índice
 aux, // auxiliar para troca 
trocou = true, 
fim = n - 1; 
while (trocou) 
{ 
    trocou = false; // sinaliza que é falso que trocou
     for (i = 0; i < fim; i++) 
     { 
       if (v[i] > v[i+1]) 
       { 
         aux = v[i];
         v[i] = v[i+1]; 
         v[i+1] = aux;
         // sinaliza que é verdadeiro que trocou 
         trocou = true; 
        } // fim if 
    } // fim for
 fim--; // decrementa o fim
} // fim while
} // fim da função 
Bubblesort
Os algoritmos de busca são muito utilizados em estrutura de dados. Sendo assim, o algoritmo que realiza a busca em vetores e que exige acesso aleatório aos elementos do mesmo e que parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca comparando o elemento que se deseja com o elemento do meio do vetor, é chamado de:
Pesquisa binária
Os métodos de ordenação são muito utilizados para facilitar a recuperação posterior de itens ordenados. Existem vários métodos de ordenação, por esse motivo, assinale corretamente a alternativa que mostra o nome do método que utiliza a estratégia de ordenação por trocas de vizinhos e é considerado o método mais simples.
Bolha
Para consultarmos uma estrutura de dados, normalmente, empregamos um tipo de pesquisa de dados. O trecho de programa a seguir refere-se a uma pesquisa por um elemento único (sua primeira ocorrência), em um conjunto de elementos de dados armazenado em uma estrutura de acesso indexado e aleatório. Selecione a opção correspondente ao algoritmo utilizado, no programa, para a referida pesquisa: 
int busca(float v[], float valor, int n) { 
int ini = 0, fim = n -1, meio; 
while (ini <= fim) { 
meio = (ini + fim)/2; 
if (v[meio] == valor)  return meio; 
if (valor < v[meio]) fim = meio -1; 
  else ini = meio+1; 
} 
return -1;
} 
Pesquisa binária
Qual papel do for mais interno na função ordena abaixo ?
void ordena( int n, int v[])
{
   int i, j, x;
   for (j = 1; j < n; ++j) {
      x = v[j];
      for (i = j-1; i >= 0 && v[i] > x; --i) 
         v[i+1] = v[i];
      v[i+1] = x;
   }
} 
Encontrar o ponto onde v[j] deve ser inserido em v[0..j-1]
Qual a importância de se entender a "ordenação" de dados ?
A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se conhecimento para resolver outros problemas.
Sabendo-se que o método de seleção também é um método de ordenação que baseia seu algoritmo em trocas entre os elementos de um vetor, se submetermos a sequencia de inteiros armazenada em um vetor inicialmente na seguinte ordem : 13, 23, 3, 8, 1. Pode-se dizer que quando o menor elemento do vetor alcançar sua posição final, a ordenação apresentada no vetor é:
1,23,3,8,13
Sabendo-se que o método de ordenção bolha ou bubble sort realiza a troca de elementos adjacentes até que todos os elementos de um vetor esteja ordenado. Então, se submetermos a sequencia de inteiros armazenada em um vetor inicialmente na seguinte ordem : 4, 2, 5, 1. 
Pode-se dizer que quando o maior elemento do vetor alcançar sua posição final, a ordenação apresentada no vetor é: 
2, 4, 1, 5
Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades.
Se o item for igual ao item que está na metade do vetor, o item foi encontrado.
ESTRUTURA DE DADOS
AULA 5
__________________________ é uma lista linear em que a alocação de memória pode ser estática, e que a forma de armazenamento é contígua ou sequencial na memória. Usamos este tipo de lista quando se tem em mente um tamanho pré-definido, ou seja, quando se sabe até onde a lista pode crescer
Lista Linear Sequencial
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória.
Lista Sequencial
As estruturas de dados em programação são muito utilizadas para tornar o acesso aos dados mais eficiente e organizado. A estrutura de dados considerada mais simples e tem como característica apresentar apenas uma dimensão é
Vetor
Considere uma lista sequencial L com n fichas de professores, sendo que cada ficha de professor é modelada pela struct : 
struct professor { 
int matricula; 
char titulo[30]; 
}; 
e a lista L é assim declarada : professor L[n]; 
Assinale o trecho que corretamente exibe todas as matrículas e titulações de todos os n professores de L .
for (int i = 0; i < n; i++)
cout << L[i].matricula << " " << L[i].titulo << endl;
Considere as seguintes afirmações: I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: C[100][100]. II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo elemento do vetor. III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. Escolha a alternativa correta
Nenhuma alternativa está correta
Considere as seguintes afirmações sobre Listas Sequenciais:
I  - São estruturas lineares que utilizam as primeiras posições de um vetor para armazenar os dados de interesse.
II - São compostas pelo conjunto dos dados que se deseja armazenar e por uma variável inteira que indica a quantidade de dados armazenados.
III - Os dados são sempre inseridos ou removidos no final da lista, tomando-se o cuidado de atualizar a quantidade de dados da mesma.
IV - A lista pode admitir ou não admitir que haja dados repetidos (listas podem ser com ou sem repetição).
Marque a opção que contém apenas todas  as afirmações verdadeiras
I, II, IV
Considere uma lista com n livros, em que cada livro é modelado pela struct :
struct Livro {
 string titulo, editora, autor;
 float preco;
};
A função X abaixo
void X (Livro v[ ], int &n, Livro L)
{
 v[n] = L;
 n++;
 cout << "Operação realizada com sucesso.";
}
implementa a operação de 
Inserção
Considere uma lista sequencial L com n fichas de professores, sendo que cada ficha de professor é modelada pela struct : 
struct professor { 
int matricula; 
char titulo[30]; 
}; 
e a lista L é assim declarada : professor L[n]; 
Assinale o trecho que corretamente exibe todas as matrículas e titulações de todos os n professores de L
for (int i = 0; i < n; i++)
cout << L[i].matricula << " " << L[i].titulo << endl;
Estude atentamente o código a segir: 
int deciframe(int v[ ], int tam, int e){ 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
m = ( i + f ) / 2; 
if ( v[m] == e ) { return m; } 
if ( e < v[m] ) { f = m - 1; } 
else { i = m + 1; } 
} 
return -1; 
} 
Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os seguintes valores, o que ela retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = -6
-1
São métodos ou algoritmos conhecidos de ordenação de dados por troca
bubble sort e quicksort
ESTRUTURA DE DADOS
AULA 6
A estrutura de dados Pilha funciona de acordo com o seguinte fundamento básico
O primeiro a entrar é oúltimo a sair
A estrutura de dados linear que obedece o seguinte critério: o último elemento inserido será o primeiro elemento a ser retirado (LIFO) é
Pilha
A estrutura de dados do tipo pilha (stack) é um tipo abstrato de dado baseada no princípio
Last In First Out (LIFO)
Ao remover um elemento armazenado em uma pilha é necessário a atualização da variável (Topo) indicadora de posição. Qual das alternativas abaixo está correta
Após a operação de remoção decrementa a variável indicadora de posição
Ao remover um elemento armazenado em uma pilha é necessário a atualização da variável (Topo) indicadora de posição. Qual das alternativas abaixo está correta
Após a operação de remoção decrementa a variável indicadora de posição
Ao treinar macacos, foi realizado um jogo para avaliar sua memória. O cientista fornecia sequências de cartas com figuras geométricas e o macaco devia reproduzir a sequência inversa usando figuras geométricas reais. Qual a estrutura de dados mais adequada para modelar esse jogo
pilha
As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados nelas armazenados, e isto em muitas ocasiões é muito vantajoso. A operação usada para inserir um elemento X numa pilha é conhecida na literatura como PUSH (X). Para remover um elemento de uma pilha a operação é o POP( ). Assim estas duas funções devem implentar o algoritmo LIFO (Last In - First Out ) ou o último a entrar é o primeiro a sair. Sendo assim se aplicarmos as seguintes operações em uma PILHA vazia: 
PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ). 
Quais valores restarão na pilha
Nenhum, a pilha estará vazia
Assinale a opção que apresenta uma estrutura de dados embasada no princípio last in, first out (LIFO) ¿ último a entrar, primeiro a sair ¿, na qual, conforme a inserção, os dados inseridos primeiramente na estrutura são os últimos a serem removidos
pilhas
As estruturas de dados devem ser especificadas de modo que estas auxiliem as aplicações em sua principal tarefa ou funcionalidade. Sendo assim, pode-se desenvolver uma aplicação capaz de fazer a conversão de números da base 10, para a base binária, octal ou hexadecimal a partir de um algoritmo de divisões sucessivas. Este algoritmo baseia na divisão de um número decimal pela base que se deseja a transformação, armazenando o resto da divisão em uma estrutura de dados, efetuando nova divisão no resultado obtido da divisão prévia, novamente armazenando o resto desta operação na estrutura de dados e assim por diante até que o resultado da divisão seja zero. Neste momento, a estrutura possui exatamente, na ordem reversa, os algarismos correspondentes ao número convertido para a nova base. Analisando esta estratégia poder-se-ia dizer que a estrutura de dados mais propícia para tal tarefa é
Pilha
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos principais a ordem reversa dos de armazenamento de dados e alocação destes de forma contínua na memória
Pilha Sequencial
Algoritmo Pilha
Inicio
IniciarPilha(s)
enquanto (não for o final das entradas) faca
leia (num)
se (num !=  3) então
   Empilhar (s, num)
senão
   Desempilhar(s)
   x := ElementoTopo(s)
fimse
fimenquanto
fimalgoritmo
Considere que, no trecho do algoritmo acima, representado por seu pseudocódigo, seja fornecido para num, sucessivamente, os valores inteiros 1, 2, 3, 4, 5, 3 e 6. Nesse caso, ao final da execução do algoritmo, o valor de x será igual a
5 e a pilha terá os valores 6, 4 e 1
Analise as afirmativas sobre uma pilha estática e assinale a opção correta.
I Ordenar é uma operação que não se faz com pilha. 
II Inserir dados é uma operação que se faz com a pilha. 
III Remover dados em qualquer posição é uma operação que se faz com a pilha. 
IV Verificar se a Pilha está cheia é necessário quando se deseja inserir nela. 
V Inicializar uma pilha significa zerar todas as variáveis do vetor
I, II e IV estão corretas
Assumindo que estamos com uma estrutura de dados do tipo LIFO, as operações abaixo vão resultar em que elementos na mesma: PUSH(2), PUSH(3), PUSH(4), POP(), POP(), PUSH(5), PUSH(7), POP()
2 5
Considere que existe uma rotina para inserir um valor inteiro em uma pilha de inteiros com o protótipo abaixo:       
 int push (int pilha[], int valor, int &topo); //retorno: 1=empilhou; 0=não empilhou
Considere que existe uma função que remove um valor de uma pilha, que possui o protótipo abaixo:
 int pop (int pilha[], int &valor, int &topo);//retorno: 1=desempilhou; 0=não desempilhou
Considere ainda a execução do seguinte trecho do programa principal:
int primeira[5], topoP=-1, segunda[5], topoS=-1, numero;
push (primeira, 3, topoP); 
push (primeira, 5, topoP);
pop (primeira, numero, topoP);
push (segunda, numero, topoS);
push (segunda, 7, topoS);
push (primeira, 1, topoP);
    Ao final da execução do techo de código acima, responda, nesta ordem,  quantos valores haverá na pilha primeira,  quantos valores haverá na pilha segunda, qual é o valor no topo da pilha primeira e  qual é o valor no topo da pilha segunda
2; 2; 1; 7
Considere dados sendo manipulados em uma pilha sequencial em que as operações possíveis são: inserção - push(novo valor) ou remoção - pop(). 
Se realizarmos a seguinte sequencia de operações:
push(A),push(B),push(C),pop(),pop(),push(D),pop(),pop(),pop().
Pode-se dizer que interior da pilha apresenta-se
Vazio
Considere uma pilha sequencial de números reais representada por
    struct Pilha {
 int topo;
 float v[10];
    };
onde temos Pilha p;
Marque a opção que corretamente inicializa a pilha
p.topo = -1
Considere que, em uma estrutura de dados p do tipo pilha, inicialmente vazia, sejam executados os seguintes comandos:
push(p,10)
push(p,5)
push(p,3)
push(p,40)
pop(p)
push(p,11)
push(p,4)
push(p,7)
pop(p)
pop(p)
Após a execução dos comandos, o elemento no topo da pilha p e a soma dos elementos armazenados na pilha p, são, respectivamente
11 e 29
Em termos da estrutura de dados do tipo PILHA, a sequência de ações empilha(10), empilha(3), empilha(5), empilha(8), desempilha(), desempilha(), empilha(20), promoveria a configuração da estrutura a partir do topo
20 3 10
Inseriu-se em uma pilha os valores A,B,C e D, seguindo essa ordem. Se logo após são executadas duas operações de remoção, pode-se dizer que
Os valores removidos serão D e C, nessa ordem
Ling Tang, estudante de computação, precisou implementar parte de um jogo de cartões com figuras de animais. Alguns jogadores teriam que jogar os cartões na mesa, enquanto outros deveriam devolver os cartões na sequência inversa à jogada. Ling Tang estudou o mecanismo do jogo e decidiu usar a melhor estrutura de dados na sua implementação. Qual a estrutura escolhida
pilha
Marque a opção que representa uma característica CORRETA a respeito da estrutura de dados pilha
O último item inserido é o primeiro item a ser retirado
Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e desempilhamento. Essas operações são conhecidas como
PUSH e POP
Navegadores para internet armazenam os últimos endereços visitados em uma estrutura de dados. Cada vez que um novo site é visitado, o endereço do site é adicionado na estrutura de endereços. Quando se aciona o retorno ("back"), o navegador permite que o usuário retorne no último site visitado e retira o endereço do site da estrutura de dados. 
Assinale a estrutura de dados mais adequada para este problema
pilha
No contexto de estrutura de dados, uma pilha é
um tipo de lista linear em que as operações de inserção e remoção são realizadas na extremidade denominada topo
O almoxarifado de um órgão pediu ao técnico de informáticaque elaborasse um sistema de custeio que, para cada saída de material, considerasse o custo do mais recente que houvera dado entrada no almoxarifado. O técnico deve desenvolver um programa para tratar com uma estrutura de dados do tipo
LIFO
O que acontece quando tentamos retirar um elemento de uma pilha que já está vazia
Underflow
Observar os quadros abaixo e reponder o que se pede
SANTA_CATARINA
Observe a função que manipula uma pilha e assuma que TAM é uma constante definida com valor 5. Saiba que o nome da função já explícita a finalidade dela
II e V estão corretas
Para gerenciar o acesso do usuário às URL pelas quais ele já passou utilizando as teclas de avanço para trás e para frente, um navegador (Explorer, Chrome, Firefox, etc.) deve armazenar as URL em estruturas de
Pilhas
Para uma aplicação em que deseja-se recuperar a ordem reversa de armazenamento dos dados em um vetor, a estrutura de dados mais apropriada a ser utilizada na implementação da aplicação é
Pilha
Pilha é uma estrutura de dados
Cujo acesso aos seus elementos segue a lógica LIFO
Pilhas são estruturas de dados que se utilizam do algoritmo LIFO, last in first out, ou melhor, o último a entrar é o primeiro a sair. Desta forma pode-se abstrair que existe apenas um local para a saída e a entrada de dados, ou seja o topo da pilha.
Supondo que uma pilha seja implementada por um vetor de inteiros de tamanho 10 e que exista uma variável global chamada topo para indexar esta posição de entrada e saída de dados e ainda quando esta variável assume o valor -1 indica que a pilha está vazia. Marque a opção que melhor ilustra a função de exclusão de um dado do vetor pilha, supondo ainda que o vetor tenha sido declarado inicialmente de forma global
void pop(){ if(topo != -1) topo--;}
Qual das alternativas a seguir pode definir uma estrutura de pilha
Entrada e saída de dados pelo final
Quando executado, um programa tem acesso à áreas de memória. A área de memória que se destina, principalmente, à alocação dos registros de ativação denomina-se
( ) área de pilha
Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de dados denominada
Pilha
Qual das alternativas a seguir pode definir uma estrutura de pilha
Entrada e saída de dados pelo final
Respeitando as ordens de inserção e de retirada dos dados, uma estrutura de
pilha é também denominada LIFO ou FILO
Sabe-se que Push() coloca um elemento na pilha, Pop() remove um elemento da pilha e Top() exibe o elemento que se encontra no topo.
Assinale a opção que indica o número que aparecerá após a execução das funções abaixo.
Sequencia: Push() / Push()/ Pop()/ Push()/Pop()/ Top() 
Números que deverão ser empilhados nessa ordem: 8/ 15/ 23/ 13 / 18
8
Sobre as pilhas, marque a alternativa correta
A característica principal que define uma Pilha diz respeito às operações de inserção e remoção, que devem ser realizadas exclusivamente na mesma extremidade
Tanto a operação TOP (acessa topo), quanto à operação POP (remover), permite acessar o último elemento armazenado em uma Pilha. Quanto à diferença entre ambas as operações em relação ao estado da Pilha é correto afirmar
Somente a operação POP altera o estado da Pilha
Tei Ping, estudante de computação, precisou implementar parte de um jogo que trabalhava com cartas especiais. Cada carta possui um número e uma letra. Alguns jogadores teriam que jogar as cartas na mesa, enquanto outros deveriam devolver as cartas na sequência inversa à jogada. Tei Ping estudou o mecanismo do jogo e decidiu usar a melhor estrutura de dados na sua implementação. Qual a estrutura escolhida
pilha
Um dos conceitos muito úteis na ciência da computação é a estrutura de dados chamada pilha. Uma pilha é um conjunto________ de itens, no qual novos itens podem ser inseridos no(a) ________ e itens podem ser retirados do(a)________ da pilha, por meio das operações________ e _________, respectivamente. Assinale a alternativa que completa corretamente as lacunas
ordenado - topo - topo - empilhar ou push  -  desempilhar ou pop
Um jogo de memória fornece sequências de números e o jogador deve dizer qual a sequência inversa para cada nova sequência fornecida pelo jogo. Qual a estrutura de dados mais adequada para modelar esse jogo
pilha
Um programador recebeu a tarefa de construir um programa que receba uma cadeia de caracteres e verifique se esta cadeia de caracteres é um PALÍNDROME, sabendo-se que um PALÍNDROME apresenta a mesma sequência de caracteres da esquerda pra direita, quanto da direita para esquerda, marque a opção que possui a estrutura de dados mais adequada a este programa
Pilha Sequencial
ESTRUTURA DE DADOS
AULA 7
IFMT - Técnico em Tecnologia da Informação - 2013
Considere a função  insere(x: inteiro), que recebe como parâmetro um número inteiro e o insere em uma Fila, e ainda,  a função remove(), que retira um valor de uma Fila.
Dada a Fila [3-4-6-8-10], executam-se os comandos na ordem: insere(1), insere(2), remove().
Após a execução desses comandos, qual será a Fila resultante
[4-6-8-10-1-2]
A estrutura de dados conhecida pela lógica  FIFO (First In First Out) é denominada
Fila
As estruturas de dados podem ser do tipo estática e dinâmica. As listas são estruturas parecidas com vetores podendo ser do tipo dinâmica. Entretanto, existem várias implementações de estruturas do tipo listas. Dessa forma, a estrutura que para o acesso de um dado, este precisa estar na saída, caso contrário, precisa remover os elementos a sua frente, é chamada de
Fila
As filas sequenciais são estruturas de dados utilizadas em diversas aplicações, tais como fila de processo, fila de impressão, sistemas de senha etc. Entretanto, nas aplicações onde há muita movimentação de dados, inserções e remoções de dados na fila, surgem espaços ociosos que podem levar ao fenômeno chamado de esgotamento de memória. Para sanar este problema pode-se substituir a fila sequencial por
fila circular
Ao treinar macacos, foi realizado um jogo para avaliar sua memória. O cientista fornecia sequências de cartas com figuras geométricas e o macaco devia reproduzir a mesma sequência usando figuras geométricas reais. Qual a estrutura de dados mais adequada para modelar esse jogo
fila
Analisando a figura abaixo, marque a alternativa correta que apresenta o tipo de estrutura de dados utilizado
Fila
Assinale a opção que, corretamente, mostra exemplos em que a estrutura de dados fila é usada, de acordo com o critério de inserções e remoções que rege tal estrutura
Fila de arquivos para impressão e buffer para gravação de dados em fila
Assumindo que estamos com uma estrutura de dados do tipo FIFO, as operações abaixo vão resultar em que elementos na mesma: ENFILEIRAR(4), ENFILEIRAR(5), ENFILEIRAR(6), DESENFILEIRAR(), DESENFILEIRAR(), ENFILEIRAR(5), ENFILEIRAR(7), DESENFILEIRAR()
5 7
Complete os espaços na afirmativa abaixo e assinale a alternativa que apresenta as respostas corretas: O escalonamento .................... é do tipo.................., em que o processo que chegar primeiro na fila de pronto é o escolhido para ser executado
FIFO, não-preemptivo
Considerando que uma fila seqüencial utiliza dois apontadores para indicar suas posições de final e início da estrutura, supondo que a fila foi criada com os apontadores apontando para a posição zero do vetor, qual das alternativas a seguir pode caracterizar uma fila vazia
Quando o apontador de posição final for igual ao início
Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar códigos de agentes de uma firma de espionagem, desde que haja espaço para um novo agente. Assinale a opção que corretamente desenfileira o código de um agente, sabendo que a fila F foi inicializada de acordo com o trecho de código abaixo.
struct Fila { in t v[100], inicio, fim; } ;
Fila F;
F. inicio = 0;
F.fim = -1
void desenfileirar(Fila &F) {
 if (F.inicio > F.fim)
 cout <<  "Não há agentes para retirar. " << endl;
       else {
 cout <<"Removido o agente "  << F.v[F.inicio];
 F.inicio++;
       }
}
void enfileirar(Fila &F, int codigo) {
 if (F.fim == 99)
 cout << "Não há espaço na firma para mais agentes. " << endl;
      else {
 F.fim++;
 F.v[F.fim] = codigo;
    }
}
Escolha a opção verdadeira
Em uma estrutura de dados que segue a lógica LIFO, os dados são excluídos na ordem inversa em que foram incluídos
Marque a afirmativa que represente uma Lista Circular Simplesmente Encadeada
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista
Para organizar o acesso dos processos que demandam recursos do computador (uso da CPU, acesso ao disco rígido e a outros dispositivos de Entrada e Saída), o Sistema Operacional gerencia essas demandas colocando os processos requisitantes em
Filas
Pode-se citar os seguintes exemplos de aplicação da estrutura fila: Fila de arquivos para impressão:
Atendimento de processos requisitados a um sistema operacional. 
Buffer para gravação de dados em mídia. 
O tratamento do armazenamento das teclas que estão sendo digitadas antes da tecla enter ser pressionada. 
Agora analise as seguintes afirmativas:
 I- Uma fila guarda a ordem direta em que os elementos foram armazenados.
 II- Uma fila guarda a ordem reversa em que os elementos foram armazenados.
 III- O algoritmo que é implementado em uma fila é baseao no princípio: " O último a entrar é o primeiro a sair". 
IV- O algoritmo que é implementado em uma fila é baseao no princípio: " O primeiro a entrar é o primeiro a sair".
 Marque a alternativa correta
I e IV estão corretas
Seja Q uma estrutura de dados do tipo fila, em que ENQUEUE(X) significa a adição do elemento X à Q e que DEQUEUE(), a retirada de um elemento. Q está inicialmente vazia e sofre a seguinte sequencia de operações: 
ENQUEUE(1)
ENQUEUE(2)
DEQUEUE() 
ENQUEUE(3) 
ENQUEUE(4) 
DEQUEUE() 
DEQUEUE() 
ENQUEUE(5) 
Ao final da sequencia, a soma dos elementos de que (Q) será
9
Sobre pilhas, lista e filas, considere as afirmativas a seguir. I. As estruturas de dados pilhas, filas e listas armazenam coleções de itens. A característica que as distinguem é a ordem em que podem ser retirados os itens dessas coleções e a ordem em que foram inseridos. II. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma fila. Necessariamente, o primeiro elemento a ser removido dessa fila é o elemento A. III. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma pilha. Necessariamente, o último elemento a ser removido dessa pilha é o elemento E. IV. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma lista. Necessariamente, o primeiro elemento a ser removido dessa lista é o elemento A
Somente as afirmativas I e II são corretas
Usa-se um vetor para se implementar uma fila sequencial, entretanto se nesta estrutura ocorrer diversas operações de remoção e inserção podemos afirmar que
A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais ser utilizada. A solução é o uso da fila circular
Uma fila duplamente terminada, isto é, uma estrutura linear que permite inserir e remover de ambos os extremos é chamada de
Deque
ESTRUTURA DE DADOS
AULA 8
A linguagem C++ oferece quatro meios de criação de tipos de dados: matrizes, estruturas ou structs, uniões e classes. As estruturas, que passaremos a chamar simplesmente de structs, são tipos de variáveis que agrupam dados geralmente desiguais, enquanto matrizes são variáveis que agrupam dados similares. Devido a esta característica as structs são utilizadas para modelar nodos (nós) de estruturas dinâmicas. Portanto podemos afirmar que
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de execução e terem seus tamanhos alterados de acordo com a demanda
As funções abaixo tem objetivos de
A primeira faz uma busca retornando o endereço do nó ou NULL quando não encontrado, já a segunda insere um novo nó no inicio da LSE
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->valor=5.60
As variáveis são na verdade trecho de memórias que armazenam dados de diversas naturezas, portanto sempre que declara-se uma variável, na linguagem C++, é necessário informar o tipo de dado que esta irá armazenar. Um tipo especial de variáveis são os ponteiros, isto é, variáveis que armazenam apenas os endereços de outras variáveis. Assim os ponteiros são usados para que se possa acessar de forma indireta uma outra variável. Sabendo-se disto e supondo que o endereço na memória da variável "a" é 100 e o endereço da memória da variável ponteiro é 200, analise o trecho de código abaixo e marque a alternativa que representa a saída do programa
100 9 200
Admita a seguinte estrutura de nó de uma lista simplesmente encadeada: struct tno { int chave; tno *proximo; }; Admita, agora, a seguinte declaração de uma variável do tipo nó: tno *no; Qual das alternativas a seguir traz uma operação válida sobre essa variável
no->proximo = new tno
Considere a função em C++ que manipula  uma lista simplesmente encadeada :
void imprime (Lista  *l)   {
   Lista* p; 
   for (p = l;   p != NULL;   p = p->prox) 
         cout  <<"Info  =  "  <<  p->info; 
}
sendo 
struct Lista {
                            int info;
                            struct Lista *prox;
}
Função que percorre os elementos da lista
Considere 
int *ptr, *qtr, *r; 
int a = 10, b = 20; 
Após executar cada instrução conforme a ordem dada a seguir : 
ptr = &a; 
qtr = &b; 
*ptr = *ptr + *qtr; 
++(*qtr); 
r = qtr; 
qtr = ptr; 
assinale a opção que mostra, correta e respectivamente, os valores de *ptr, *qtr , *r , a e b
30 30 21 30 21 
Considere uma lista simplesmente encadeada com placas de carros. Assinale a opção que, corretamente, imprime todas as placas da lista. Considere :
struct no {
	 string placa;
 struct no *link;
};
no *p; //p aponta para o início da lista
void imprimir(no *p) {
 while (p != NULL) {
 cout << pplaca;
 p = plink;
}
}
Dr. Pei Tam possui uma lista não ordenada de pacientes de seu consultório em que registra apenas o nome endereço e o telefone de cada paciente. Como não há limites para o crescimento de sua lista, como se pode implementar a inserção de um novo paciente na lista, sabendo que cada paciente é do tipo Paciente e a lista é do tipo List assim definidos :
struct Paciente {
 long int matricula;
 string nome, endereco e tel;
};
struct List {
 Paciente p;
 struct List *link;
 }
List * inserePac(List *i, Paciente pt)
{
 List *novo = new List;
 novo->p = pt;
 novo->link =i;
 return novo;
}
E C++, quando um ponteiro é declarado para uma struct, o acesso aos campos deste registro (struct) se dá pelo operador
-> (seta)
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 início da lista
Em uma aplicação que usa processos de alocação estática e dinâmica de memória é correto afirmar que
A memória utilizada pela aplicação é inicialmente estática, mas pode mudar
Em uma rotina emque se pretenda inserir o primeiro dado em uma estrutura dinâmica, é correto afirmar que
Não deve existir uma estrutura de repetição
Em uma lista linear simplesmente encadeada
Cada nó possui um só ponteiro que referencia o próximo nó da lista
Em uma aplicação que usa apenas o processo de alocação estática de memória é correto afirmar que
Toda a memória utilizada pela aplicação não muda durante toda a sua execução
Marque a afirmativa que represente uma separação
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade
Marque a afirmativa que represente uma concatenação em listas
Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante
Montei uma biblioteca popular que aceita doações sem limites. Marque a opção que especifica o tipo de lista e o tipo de alocação de memória mais adequados para este problema
lista encadeada e alocação dinâmica de memória
Na Alocação dinâmica, temos alguma regras a considerar. Leia atentamente as afirmativas abaixo e assinale a correta.
I Alocou com new, desaloca com free
II Alocou com new[], desaloca com delete
III Alocou com new[], desaloca com delete[]
IV Alocou com new[], desaloca com free[]
V Alocou com new, desaloca com delete
III e V estão corretas
Numa Lista Encadeada, podemos afirmar que:
I) Todos os nós são alocados de uma única vez.
II) Os nós não são alocados contiguamente na memória obrigatoriamente.
III) Os elementos de uma lista encadeada são ligados por dois ponteiros.
IV) Para que possamos percorrer toda a lista, precisamos armazenar o endereço do próximo elemento para possibilitar o encadeamento
II e IV estão corretas
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
II e V estão corretas
O espaço necessário para a representação dos dados pode ser alocado à medida que se torne necessário, através da alocação dinâmica. Uma estrutura armazenada através de encadeamento apresenta seus nodos alocados em posições aleatórias na memória, e não lado a lado. Dessa forma, existem várias vantagens no uso de representar os dados por encadeamento. Marque a alternativa correta que apresenta estas vantagens
Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de componentes
Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 (menos um)
Antes da inserção deve-se fazer o incremento da variável final
Podemos dizer que uma lista encadeada tem as seguintes características:
i) conhecida como lista ligada.
ii) seus nós são responsáveis para manter a sequência da lista.
iii) o último nó deve apontar para NULL.
Assinale a alternativa que informa as afirmativas corretas
Todas as afirmativas estão corretas
Qual das inicializações de ponteiros apresentadas abaixo está correta
int *p = new int
Qual o valor de x no final do programa? int main() { int x, *p, y; x = 3; p = &x; y = *p; y = 7; (*p)++; (*p) += y; return(0); }
11
Qual das instruções abaixo é correta para declarar um ponteiro para inteiro
int *pti
QUAL A SAÍDA DESTE PROGRAMA?
#include 
main()
{
 int i=10,*p;
 p=&i;
 
 cout << *p << " " << i + *p<< " " << *p**p << " " << i+**&p;
 system("pause");
}
10 20 100 20
QUAL A SAÍDA DO PROGRAMA ABAIXO?
#include 
main()
{
 int x=5,*p;
 p=&x;
 
 cout << x - *p << " " << **&*&p + 1 << " " << *p*2+*p << " " << x+**&p;
 system("pause");
}
0 6 15 10
Qual é o resultado do código abaixo:
  int a =10;
int *p = &a;
cout<< &p << endl
O endereço da variável p será impresso
Seja a seguinte seqüência de instruções em um programa C++: int *pti; int i = 10; pti = &i; Qual afirmativa é falsa
pti é igual a 10
Seja uma lista encadeada cujos nodos são formados pelo seguinte tipo de dado:
struct empregado{
 long int matricula;
 float salario;
 empregado *proximo;
};
Suponha que o ponteiro pont tenha o endereço de um nodo da lista, o qual se deseja atribuir um novo valor para o campo salario. Marque a alternativa que corretamente altera o valor do campo salario para 5000.00
salario=5000.00
Seja uma lista encadeada cujo nodo é representado por:
struct nodo{
 int valor;
 nodo prox;
}; 
Esta estrutura possui um ponteiro de referência que aponta sempre para o primeiro nodo da lista, sendo este declarado como: nodo *lista;
Numa lista encadeada seu último nodo possui o campo prox sempre igual a NULL. Marque a opção que representa o trecho de código onde um ponteiro auxiliar é capaz de percorre a lista até seu último nodo
nodo *aux=lista;
while(aux->prox)aux=aux->prox
Sobre listas simplesmente encadeadas, é INCORRETO afirmar que
possuem tamanho fixo
Tei Ping , famosa cabeleireira das estrelas, possui uma lista não ordenada de clientes em que registra apenas o nome, endereço e o telefone de cada cliente. Como não se pode pré-definir um limite para o tamanho da lista, como se pode implementar a inserção de um novo cliente na lista ? Sabe-se que cada cliente é do tipo Cliente e a lista é do tipo List assim definidos
List * insereCliente(List *i, Cliente c)
{
 List *novo = new List;
 novo->p = c;
 novo->link =i;
 return novo;
}
Tem-se uma estrutura de dados do tipo lista encadeada com 10 elementos, em que o primeiro e o último elemento estão ligados entre si. Trata-se de uma estrutura de dados denominada Lista
Encadeada Circular
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 = new Lista;
 novo->c = cl;
 novo->link = p;
 return novo;
}
Uma estrutura de dados pode ser Estática ou Dinâmica. No primeiro caso os limites são
Determinados pelo problema em que serão utilizados
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
as afirmações i e ii estão corretas
ESTRUTURA DE DADOS
AULA 9
A pilha é uma estrutura de dados que permite a inserção/ remoção de itens dinamicamente seguindo a norma de último a entrar, primeiro a sair. Suponha que para uma estrutura de dados, tipo pilha, são definidos os comandos:
- PUSH (p, n): Empilha um número "n" em uma estrutura de dados do tipo pilha "p";
- POP (p): Desempilha o elemento do topo da pilha.
Considere que, em uma estrutura de dados tipo pilha p, inicialmente vazia, sejam executados os seguintes comandos:
PUSH (p, 10)
PUSH (p, 5)
PUSH (p, 3)
PUSH (p, 40)
POP (p)
PUSH (p, 11)
PUSH (p, 4)
PUSH (p, 7)
POP (p)
POP (p)
Após a execução dos comandos, o elemento no topo da pilha "p" e a soma dos elementos armazenados na pilha "p" são, respectivamente
11 e 29
Em termos daestrutura de dados do tipo FILA  (fila encadeada com alocação dinâmica), a sequência de ações
             insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20),
promoveria a configuração da estrutura
5 8 20
Estava um aluno estudando Lista Simplesmente Encadeada quando encontrou  em um site a definição da struct nodo e de uma função cujo nome você deverá escolher para substituir XXX nas opções abaixo depois que analisar a função, assumindo que teste foi realizado, permitindo  que a operação fosse realizada.
 struct nodo
{
  int info;
  struct nodo *prox;
}; 
nodo* XXX(nodo *ptr, int valor)
{
  nodo *temp = new nodo;
  ...
  temp->info = valor;    
  temp->prox = ptr; 
  return temp;         
}
InsereNoFrente
Para converter de decimal para binário usamos a estrutura de dados pilha. Assinale a opção que, corretamente, indica as ações corretas para empilhar o resto da divisão gerado no processo de conversão, considerando uma lista simplesmente encadeada. Considere o tipo definido abaixo : 
struct no { 
int dado; 
struct no *link; 
}
É preciso alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do novo nó, apontar o link do novo nó para o início da lista e enfim, retornar o ponteiro para o novo nó
Sabendo que uma fila encadeada possui seus nós definidos pela : 
struct no { 
int x; 
no *prox; 
}; 
Marque a alternativa que representa corretamente a criação ou alocação do nó na sintaxe do C++ para utilização na fila
no *p=new no	
Seja o seguinte exemplo de nodo de uma lista de encadeada:
struct nodo{
 float valor;
 string produto;
 nodo * proximo;
 };
Sabendo-se que nesta lista o último nó ou nodo possui o campo próximo nulo (null), marque a alternativa que representa corretamente a operação de busca do último nodo, a partir de um ponteiro pt apontado para o primeiro nodo da lista
while(pt->próximo)pt=pt->próximo
Sobre as estruturas de dados existentes podemos afirmar que
Na estrutura das Pilhas a manipulação dos dados sempre se dá no topo
Tínhamos declarado um ponteiro de nome ptr e precisávamos construir uma estrutura de repetição que pudesse repetir enquanto o ponteiro não fosse nulo. Observe os trechos abaixo e assinale qual a afirmativa correta.
I if (ptr !=NULL) 
II if( !ptr ) 
III if(ptr) 
IV while (ptr !=NULL) 
V while (ptr)
IV e V estão corretas
ESTRUTURA DE DADOS
AULA 10
Ao criarmos uma rotina para inserir um dado em uma LISTA de dados duplamente encadeada e circular, nos deparamos com as seguintes cuidados
Posso inserir no começo, no meio ou no fim
As listas encadeadas podem ser elaboradas de duas formas utilizando uma técnica de encadeamento simplesmente ou encadeamento duplo. O que difere uma lista simplesmente encadeada de uma lista duplamente encadeada
Em uma lista simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente encadeada aponta para mais de um nó
Assinale a alternativa que traz uma afirmação incorreta sobre as diversas implementações da estrutura de dados lista
Listas encadeadas em geral são preferíveis em relação às listas sequenciais, especialmente por serem mais eficientes e sempre utilizarem menos espaço de armazenamento na memória
Com relação à lista duplamente encadeada, é correto afirmar que
A lista pode ser percorrida com igual facilidade para a direita ou para a esquerda, pois existem dois ponteiros
Considere uma lista duplamente encadeada não circular em que
struct nodupla {
		 int dado;
		 struct nodupla *dlink; // aponta p/ o nó à direita
		 struct nodupla *elink; // aponta p/ o nó à esquerda
 };
 sendo nodupla *p; //ponteiro para o início da lista
 A opção que corretamente mostra as instruções para inserir um valor no início da lista apontada por p é
nodupla *novo;
 
	novo = new nodupla;
	novo->dado = valor;
	novo->dlink = p;
	novo->elink = NULL;
	if (p != NULL)
 p->elink = novo;
	p = novo;
Em uma lista linear duplamente encadeada
Além do campo relativo ao dado, cada nó possui dois ponteiros
Em uma lista duplamente encadeada, seus nodos são compostos por campos cujos tipos podem ser de diferentes naturezas, entretanto dois de seus campos devem ser ponteiros para o mesmo tipo do nodo, são estes os ponteiros ant e prox, que apontam, respectivamente, para o nodo anterior e para o próximo nodo. Esta característica permite que a estrutura seja percorrida em ambos os sentidos. Assim analisando as operações a seguir:
p->ant->prox=p->prox;
p->prox->ant=p->ant;
Sendo p um ponteiro que aponta para um dos nodos da lista, pode-se afirmar que
As operações removem o nodo apontado pelo ponteiro p
Geralmente em algumas situações é necessário fazer a desalocação do espaço utilizado na memória. Porém, isso depende de como a reserva de uma quantidade de espaço de memória é feita, pois em alguns casos, o próprio compilador faz a desalocação. Quando o compilador não faz esta desalocação a memória foi reservada utilizando___
Alocação dinâmica de memória
O armazenamento de dados na memória do computador é feito de forma ordenada, utilizando-se estruturas e regras de operações. Das alternativas a seguir, assinale a correta
Em uma lista linear com alocação duplamente encadeada os nós da estrutura ocupam espaços aleatórios na memória e cada nó armazena além da sua informação os endereços do nó anterior e do próximo nó da estrutura
Os registros também conhecidos como estruturas, são estruturas de dados do tipo heterogêneo, ou seja, permitem que valores de tipos diferentes possam ser armazenados em uma mesma estrutura. Analisando a estrutura abaixo, a mesma pode ser utilizada para qual tipo de estrutura de dados, marque a alternativa correta.
struct nomeRegistro{
       int info;
       struct nomeRegistro* ant;
       struct nomeRegistro* prox;
};
typedef struct nomeRegistro NOMEREGISTRO
Lista duplamente encadeada
Observe a struct, definida globalmente, e um trecho de uma função que manipula uma Lista Duplamente Encadeada.
struct listaDE 
{
 int info;
 struct listaDE* ant;
 struct listaDE* prox;
};
...
listaDE* novo = new listaDE;
novo->info = valor;
novo->prox = LISTA;
novo->ant = NULL; 
Assinale a alternativa que apresenta o protótipo dessa função
listaDE *insereInicio(listaDE *LISTA, int valor)
São listas que, além de cada elemento indicar o elemento seguinte, também indicam aquele que o antecede, ou melhor, cada elemento é ligado a seu sucessor e a seu predecessor, possibilitando um caminhamento no sentido início-fim ou no sentido oposto (fim-início). O texto acima, sobre Estrutura de Dados, descreve
Listas Duplamente Encadeadas
Sobre as estruturas de dados lineares, assinale V ou F:
I - Em uma pilha, o último elemento a entrar é o primeiro a sair.
II - Em uma fila, o primeiro elemento a entrar é o último a sair.
III - Uma lista permite que as inserções possam ser feitas em qualquer lugar (posição), mas as remoções, não.
IV - Em uma lista circular com encadeamento simples, o primeiro elemento aponta para o segundo e para o último.
V - Para remover um elemento de uma lista duplamente encadeada, deve-se alterar o encadeamento dos elementos anterior e próximo ao elemento removido. A sequência correta de cima para baixo
V,F,F,F,V
Suponha uma listagem mantida com informações sobre um equipamento a ser adquirido por uma empresa. A listagem possui as informações sobre de 10 fornecedores, descritas a seguir: 
próximo: um ponteiro para o próximo fornecedor da listagem; 
nome: nome, identificando o fornecedor;
valor: preço do equipamento no fornecedor; 
anterior: um ponteiro para o fornecedor anterior da listagem. 
Sendo o fornecedor "Z" o quinto elemento desta listagem e "X" e "Y" dois outros fornecedores que não pertencem à listagem, com seus respectivos ponteiros "pZ", "pX" e "pY", considere o trecho de código abaixo.
pY->proximo = pX;
pX->anterior = pY;
pX->proximo = pZ->proximo;
pZ->proximo->anterior = pX;
pZ->proximo = pY;
pY->anterior = pZ;
Este trecho de código éusado para inserir na listagem os fornecedores
Y, logo após o Z, e X, logo após o Y
Um tipo de estrutura de dados é declarada em C como:
typedef struct no *apontador;
       struct no{
       int valor;
       apontador esq, dir;
}
onde esq e dir representam ligações para os dados da esquerda e direita, respectivamente. Qual das seguintes alternativas é uma implementação correta da operação que inverte as posições dos dados da esquerda e da direita uma estrutura p, onde t é um apontador auxiliar
t=p->dir;
p->dir = p->esq;
p->esq = t;
Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para
Para frente e para trás, apenas

Continue navegando