Buscar

A2_-_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 7 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 7 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

Local: Sala 1 - Sala de Aula / Andar / Polo Madureira / POLO MADUREIRA - RJ 
Acadêmico: EAD-IL10301-20204A
Aluno: VANESSA SOUZA DOS SANTOS 
Avaliação: A2-
Matrícula: 20192301060 
Data: 12 de Dezembro de 2020 - 08:00 Finalizado
Correto Incorreto Anulada  Discursiva  Objetiva Total: 7,50/10,00
1  Código: 35792 - Enunciado: Faça a análise do programa a seguir, cujo código está escrito em
linguagem C, e marque a alternativa que corresponda à implementação da rotina de remoção de
dados em uma lista simplesmente encadeada. 
void main( ) {            setlocale(LC_ALL, "portuguese"); 
            ListaSimplesEnc minhaLista;            int valor, op, valorAlt; 
            criarLista(&minhaLista); 
            printf("Escolha uma opção:\n"); 
            while (1) {                        printf("\n(1) Inserir elemento no início da Lista\n");                        printf("(2)
Inserir elemento em ordem (verifique se a lista está ordenada)\n");                        printf("(3) Remover
elemento no início da Lista\n");                        printf("(4) Remover elemento específico da Lista\n");         
              printf("(5) Mostrar Lista\n");                        printf("(6) Apagar todos os elementos da Lista\n");       
                printf("(7) Alterar elemento da Lista\n");                        printf("(0) Sair\n");                        printf(" ?
");                        scanf("%d", &op); 
                        system("cls");                        switch (op) {                        case 1: // inserir elemento no início         
                         printf("Valor? ");                                   scanf("%d", &valor);                                 
 inserirIni(&minhaLista, valor);                                   break;                        case 2: // inserir elemento
ordenado                                   printf("Valor? ");                                   scanf("%d", &valor);                                 
 inserirOrd(&minhaLista, valor);                                   break;                        case 3: // remover o primeiro           
                       removerIni(&minhaLista);                                   break;                        case 4: // remover
determinado elemento                                   printf("Valor? ");                                   scanf("%d", &valor);               
                   removerEle(&minhaLista, valor);                                   break;                        case 5: // mostrar lista   
                               if (estaVazia(&minhaLista)) {                                               printf("Lista vazia\n");                         
         }                                   else {                                               mostrarLista(&minhaLista);                                   }           
                       break;                        case 6: // apagar todos os elementos da Lista                                 
 removerTudo(&minhaLista);                                   break;                        case 7: // alterar um elemento             
                     printf("Valor a ser alterado? ");                                   scanf("%d", &valor);                                 
 printf("Novo valor? ");                                   scanf("%d", &valorAlt);                                 
 alterarEle(&minhaLista, valor, valorAlt);                                   break;                        case 0: // abandonar o
programa                                   removerTudo(&minhaLista);                                    exit(0);                        default:   
                               printf("Opção inexistente!\n");                        }            }}
 a) void atento(ListaSimplesEnc *pList, int v1, int v2) {            Nodo *pAtu, *pAnt; 
            pAnt = NULL;            pAtu = pList->prim; 
            while (pAtu != NULL && pAtu->info != v1)             {                        pAnt = pAtu;                        pAtu = pAtu-
>prox;            } 
            if (pAnt != NULL)             {                        if (pAtu != NULL)                         {                                   pAtu->info =
v2;                        }                        else                         {                                   printf("Valor não encontrado\n");             
          }            }            else             {                        printf("Lista Vazia\n");            }}
 b) void atento(ListaSimplesEnc *pList) {            Nodo *p;            printf("Lista: ");                        for (p =
pList->prim; p != NULL; p = p->prox)             {                        printf("%d -> ", p->info);            }                       
printf("NULL\n");}
 c) void atento(ListaSimplesEnc *pList) {            Nodo *pAux = pList->prim; 
            if (pAux != NULL)             {                        pList->prim = pList->prim->prox;                        free(pAux);           
}            else             {                        printf("Lista Vazia\n");            }}
 d) int atento(ListaSimplesEnc *pList) {// Atento aos comentários: elemento removido com
sucesso            return(pList->prim == NULL);}
0,00/ 1,50
Rectangle
Rectangle
Rectangle
 e) void atento(ListaSimplesEnc *pList, int v) {            Nodo *novo;            novo =
(Nodo*)malloc(sizeof(Nodo)); 
            if (novo != NULL)             {                        novo->info = v;                        novo->prox = pList->prim;                 
      pList->prim = novo;            }            else             {                        printf("Memória Insuficiente\n");            }}
Alternativa marcada:
a) void atento(ListaSimplesEnc *pList, int v1, int v2) {            Nodo *pAtu, *pAnt; 
            pAnt = NULL;            pAtu = pList->prim; 
            while (pAtu != NULL && pAtu->info != v1)             {                        pAnt = pAtu;                        pAtu = pAtu-
>prox;            } 
            if (pAnt != NULL)             {                        if (pAtu != NULL)                         {                                   pAtu->info =
v2;                        }                        else                         {                                   printf("Valor não encontrado\n");             
          }            }            else             {                        printf("Lista Vazia\n");            }}
Justificativa: Resposta correta: Representa uma rotina de remoção de elementos de uma lista
simplesmente encadeada.void atento(ListaSimplesEnc *pList) {            Nodo *pAux = pList->prim; 
            if (pAux != NULL)             {                        pList->prim = pList->prim->prox;                        free(pAux);   
        }            else             {                        printf("Lista Vazia\n");            }} 
Distratores:void atento(ListaSimplesEnc *pList, int v) {            Nodo *novo;            novo =
(Nodo*)malloc(sizeof(Nodo)); 
            if (novo != NULL)             {                        novo->info = v;                        novo->prox = pList->prim;       
                pList->prim = novo;            }            else             {                        printf("Memória Insuficiente\n");   
        }}Errada, pois se refere à operação de inclusão de elementos em uma lista simplesmente
encadeada. 
void atento(ListaSimplesEnc *pList) {            Nodo *p;            printf("Lista: ");                        for (p =
pList->prim; p != NULL; p = p->prox)             {                        printf("%d -> ", p->info);            }                       
printf("NULL\n");}Errada, pois se refere à rotina de consulta de elementos de uma lista
simplesmente encadeada. 
void atento(ListaSimplesEnc *pList, int v1, int v2) {            Nodo *pAtu, *pAnt; 
            pAnt = NULL;            pAtu = pList->prim; 
            while (pAtu != NULL && pAtu->info != v1)             {                        pAnt= pAtu;                        pAtu =
pAtu->prox;            } 
            if (pAnt != NULL)             {                        if (pAtu != NULL)                         {                                   pAtu-
>info = v2;                        }                        else                         {                                   printf("Valor não
encontrado\n");                        }            }            else             {                        printf("Lista Vazia\n");           
}}Errada, pois se refere à rotina de alteração de elementos de uma lista simplesmente encadeada. 
int atento(ListaSimplesEnc *pList) {// Atento aos comentários: elemento removido com sucesso   
        return(pList->prim == NULL);}Errada, pois se refere à rotina de teste para lista vazia.
2  Código: 35782 - Enunciado: No estudo da estrutura de dados árvore, uma operação comum é
percorrer uma árvore binária, ou seja, percorrer a árvore enumerando cada um de seus nós uma
vez. Podemos simplesmente querer imprimir o conteúdo de cada nó ao enumerá-lo, ou podemos
processá-lo de alguma maneira. Seja qual for o caso, falamos em visitar cada nó à medida que
ele é enumerado. Evidentemente, a ordem na qual os nós de uma lista linear são visitados em um
percurso é do primeiro para o último. Entretanto, não existe uma ordem "natural" para os nós de
uma árvore. Sendo assim, são usados diferentes ordenamentos de percurso em diferentes casos.
São definidos três desses métodos de percurso. Em cada um desses métodos, não é preciso fazer
nada para percorrer uma árvore binária vazia. Todos os métodos são definidos recursivamente,
de modo que percorrer uma árvore binária envolve visitar a raiz e percorrer suas subárvores
esquerda e direita. A única diferença entre os métodos é a ordem na qual essas três operações
são efetuadas, pré-ordem, em ordem e pós-ordem.(Tanenbaum, A. A.; Langsam, Y.; Augenstein,
M. J. Estruturas de Dados Usando C. São Paulo: Makron Books, 1995.) 
Com base no texto apresentado, analise os elementos da tabela a seguir de forma a interpretá-
los, identificando, por meio do percurso de pré-ordem, a ordem de visita de cada elemento. 
(
1,50/ 1,50
 a) 18, 22, 36, 23, 52, 58, 76, 88, 99, 97, 69, 45.
 b) 45, 23, 69, 22, 36, 58, 97, 18, 52, 88, 99, 76.
 c) 18, 22, 23, 36, 45, 52, 58, 69, 76, 88, 97, 99.
 d) 23, 22, 36, 18, 69, 58, 52, 97, 88, 99, 76, 45.
 e) 45, 23, 22, 18, 36, 69, 58, 52, 97, 88, 76, 99.
Alternativa marcada:
e) 45, 23, 22, 18, 36, 69, 58, 52, 97, 88, 76, 99.
Justificativa: Resposta correta: 45, 23, 22, 18, 36, 69, 58, 52, 97, 88, 76, 99.Refere-se à saída do
percurso pré-ordem (RED). 
Distratores:45, 23, 69, 22, 36, 58, 97, 18, 52, 88, 99, 76. Errada, pois se refere à saída do percurso
para busca em largura (DFS).18, 22, 23, 36, 45, 52, 58, 69, 76, 88, 97, 99. Errada, pois se refere à
saída do percurso em ordem (ERD).23, 22, 36, 18, 69, 58, 52, 97, 88, 99, 76, 45. Errada, pois existe
erro no processamento de saída, ao ser feita uma leitura na tentativa de um dos métodos
aplicados (possivelmente o aluno confundiu o primeiro valor da esquerda com 23).18, 22, 36, 23,
52, 58, 76, 88, 99, 97, 69, 45. Errada, pois se refere à saída do percurso pós-ordem (EDR).
3  Código: 35791 - Enunciado: O trecho de código de programa em linguagem C descrito a seguir
descreve operações com a estrutura de dados lista simplesmente encadeada. Nesse contexto,
analise o código-fonte e marque a alternativa que corresponda à operação de inclusão de
elementos no início da lista.void main( ) {            setlocale(LC_ALL, "portuguese"); 
            ListaSimplesEnc minhaLista;            int valor, op, valorAlt; 
            criarLista(&minhaLista); 
            printf("Escolha uma opção:\n"); 
            while (1) {                        printf("\n(1) Inserir elemento no início da Lista\n");                        printf("(2)
Inserir elemento em ordem (verifique se a lista está ordenada)\n");                        printf("(3) Remover
elemento no início da Lista\n");                        printf("(4) Remover elemento específico da Lista\n");         
              printf("(5) Mostrar Lista\n");                        printf("(6) Apagar todos os elementos da Lista\n");       
                printf("(7) Alterar elemento da Lista\n");                        printf("(0) Sair\n");                        printf(" ?
");                        scanf("%d", &op); 
                        system("cls");                        switch (op) {                        case 1: // inserir elemento no inicio         
                         printf("Valor? ");                                   scanf("%d", &valor);                                 
 inserirIni(&minhaLista, valor);                                   break;                        case 2: // inserir elemento
ordenado                                   printf("Valor? ");                                   scanf("%d", &valor);                                 
 inserirOrd(&minhaLista, valor);                                   break;                        case 3: // remover o primeiro           
                       removerIni(&minhaLista);                                   break;                        case 4: // remover
determinado elemento                                   printf("Valor? ");                                   scanf("%d", &valor);               
                   removerEle(&minhaLista, valor);                                   break;                        case 5: // mostrar lista   
                               if (estaVazia(&minhaLista)) {                                               printf("Lista vazia\n");                         
         }                                   else {                                               mostrarLista(&minhaLista);                                   }           
                       break;                        case 6: // apagar todos os elementos da Lista                                 
 removerTudo(&minhaLista);                                   break;                        case 7: // alterar um elemento             
                     printf("Valor a ser alterado? ");                                   scanf("%d", &valor);                                 
 printf("Novo valor? ");                                   scanf("%d", &valorAlt);                                 
 alterarEle(&minhaLista, valor, valorAlt);                                   break;                        case 0: // abandonar o
programa                                   removerTudo(&minhaLista);                                    exit(0);                        default:   
                               printf("Opção inexistente!\n");                        }            }} 
 a) void atento(ListaSimplesEnc *pList, int v1, int v2) {            Nodo *pAtu, *pAnt; 
            pAnt = NULL;            pAtu = pList->prim; 
            while (pAtu != NULL && pAtu->info != v1)             {                        pAnt = pAtu;                        pAtu = pAtu-
>prox;            } 
            if (pAnt != NULL)             {                        if (pAtu != NULL)                         {                                   pAtu->info =
1,50/ 1,50
v2;                        }                        else                         {                                   printf("Valor não encontrado\n");             
          }            }            else             {                        printf("Lista Vazia\n");            }}
 b) void atento(ListaSimplesEnc *pList) {            Nodo *p;            printf("Lista: ");                        for (p =
pList->prim; p != NULL; p = p->prox)             {                        printf("%d -> ", p->info);            }                     
  printf("NULL\n");}
 c) void atento(ListaSimplesEnc *pList) {            Nodo *pAux = pList->prim; 
            if (pAux != NULL)             {                        pList->prim = pList->prim->prox;                        free(pAux);           
}else             {                        printf("Lista Vazia\n");            }}
 d) int atento(ListaSimplesEnc *pList) {// Atento aos comentários: elemento incluído com
sucesso            return(pList->prim == NULL);}
 e) void atento(ListaSimplesEnc *pList, int v) {            Nodo *novo;            novo =
(Nodo*)malloc(sizeof(Nodo)); 
            if (novo != NULL)             {                        novo->info = v;                        novo->prox = pList->prim;                 
      pList->prim = novo;            }            else             {                        printf("Memória Insuficiente\n");            }}
Alternativa marcada:
e) void atento(ListaSimplesEnc *pList, int v) {            Nodo *novo;            novo =
(Nodo*)malloc(sizeof(Nodo)); 
            if (novo != NULL)             {                        novo->info = v;                        novo->prox = pList->prim;                 
      pList->prim = novo;            }            else             {                        printf("Memória Insuficiente\n");            }}
Justificativa: Resposta correta: void atento(ListaSimplesEnc *pList, int v) {            Nodo *novo;         
  novo = (Nodo*)malloc(sizeof(Nodo)); 
            if (novo != NULL)             {                        novo->info = v;                        novo->prox = pList->prim;       
                pList->prim = novo;            }            else             {                        printf("Memória Insuficiente\n");   
        }}Correta, pois refere-se à operação de inclusão de elementos em uma lista simplesmente
encadeada. 
Distratores: void atento(ListaSimplesEnc *pList) {            Nodo *pAux = pList->prim; 
            if (pAux != NULL)             {                        pList->prim = pList->prim->prox;                        free(pAux); 
          }            else             {                        printf("Lista Vazia\n");            }}Errada, pois refere-se à rotina de
remoção de elementos de uma lista simplesmente encadeada 
void atento(ListaSimplesEnc *pList) {            Nodo *p;            printf("Lista: ");                        for (p =
pList->prim; p != NULL; p = p->prox)             {                        printf("%d -> ", p->info);            }                       
printf("NULL\n");}Errada, pois refere-se à rotina de  consulta de elementos de um a lista
simplesmente encadeada 
void atento(ListaSimplesEnc *pList, int v1, int v2) {            Nodo *pAtu, *pAnt; 
            pAnt = NULL;            pAtu = pList->prim; 
            while (pAtu != NULL && pAtu->info != v1)             {                        pAnt = pAtu;                        pAtu =
pAtu->prox;            } 
            if (pAnt != NULL)             {                        if (pAtu != NULL)                         {                                   pAtu-
>info = v2;                        }                        else                         {                                   printf("Valor não
encontrado\n");                        }            }            else             {                        printf("Lista Vazia\n");           
}}Errada, pois refere-se à rotina de alteração de elementos de uma lista simplesmente
encadeada. 
int atento(ListaSimplesEnc *pList) {// Atento aos comentários: elemento incluído com sucesso       
    return(pList->prim == NULL);}Errada, pois refere-se à rotina de teste para lista vazia, apenas.
4  Código: 35793 - Enunciado: Considere os conceitos sobre a estrutura de dados fila circular,
apontados por Puga e Risseti (2009). Analise o código fonte descrito em linguagem C e marque a
alternativa que corresponda a uma operação de remoção de elementos em fila circular. 
int main ( ){            struct circular F;            F.com = 0;            F.total = 0;            F.fim = -1;                        int
1,50/ 1,50
opc,x,pos,num; 
    setlocale(LC_ALL, "portuguese");            do    {        opc = menu(); 
        switch(opc)                        {                                   case 0:                                        exit (0);                                 
 break;                                                                      case 1:                                   if(F.fim==MAX-1)                                   {     
                                         printf("\nA Fila está Cheia. ");                                   }                                   else            {             
  printf("\n Elemento (número) a ser inserido na Fila: ");                scanf("%d", &x);                if(busca(F,x)
== 1)                    {                        printf("Não é possível inserir elementos repetidos ");                    }               
else                    {                        enfileirar(&F, x);                    }            }                                   break;                                      
                               case 2:                                   if(F.total == 0)                                               printf("\nA Fila está
Vazia. ");                                   else                                               printf("\nElemento retirado da Fila Circular =>
%d", desenfileirar(&F));                                   break;                                                                      case 3:                           
       if(F.fim == -1)                                               printf("\nA Fila está Vazia. ");                                   else                         
                     listar(F);                                   break;                                                                      case 4:           
printf("\nQual o elemento que deseja localizar ? ");            scanf("%d", &x);            if((busca(F,x)==1))       
        printf("\nO elemento %d está na Fila. ", x);            else                printf("\nO elemento %d não está
na Fila ", x);            break;                                   default: printf("\nOpção Inválida. \n");                        }                   
    printf("\n");         system("PAUSE");            }while(opc!=0);}
 a) int atento(struct circular *F){            int aux;            aux = F->memo[F->com];            F->com++; 
            if(F->com == MAX)    {        F->com = 0;            } 
            F->total --;            return aux;}
 b) int atento( ){    int opc;    system("CLS");    printf("* * * FAÇA SUA ESCOLHA * * *\n\n");    printf("
1- Enfileirar Elemento \n");    printf(" 2- Desenfileirar Elemento \n");    printf(" 3- Listar Elementos
\n");    printf(" 4- Buscar Elemento na Fila \n");    printf(" 0- Sair \n\n");    printf(" Opção: ");   
scanf("%d", &opc);    return opc;}
 c) int atento(struct circular B, int x){       int achou;    while(B.total!=0)    {        if(x ==
desenfileirar(&B))        {           achou = 1;        }    }    return achou;}
 d) void atento(struct circular A){            printf("\nElementos da Fila Circular \n\n");                     
  while(A.total!=0)            {                        printf("%d  ", desenfileirar(&A));            }            printf("\n");}
 e) void atento(struct circular *F, int x){    F->fim++;            if(F->fim == MAX)       F->fim = 0; 
            F->memo[F->fim] = x;            F->total++;}
Alternativa marcada:
a) int atento(struct circular *F){            int aux;            aux = F->memo[F->com];            F->com++; 
            if(F->com == MAX)    {        F->com = 0;            } 
            F->total --;            return aux;}
Justificativa: Resposta correta:Representa a letra rotina de desenfileiramento de elementos em
uma fila circular: 
int atento(struct circular *F){            int aux;            aux = F->memo[F->com];            F->com++; 
            if(F->com == MAX)    {        F->com = 0;            } 
            F->total --;            return aux;} 
Distratores:void atento(struct circular *F, int x){    F->fim++;            if(F->fim == MAX)       F->fim= 0; 
            F->memo[F->fim] = x;            F->total++;}Errada, pois é a rotina de enfileiramento de
elementos em uma fila circular. 
void atento(struct circular A){            printf("\nElementos da Fila Circular \n\n");                       
while(A.total!=0)            {                        printf("%d  ", desenfileirar(&A));            }           
printf("\n");}Errada, pois é a rotina para listar os elementos de uma fila circular. 
int atento(struct circular B, int x){       int achou;    while(B.total!=0)    {        if(x == desenfileirar(&B))   
    {           achou = 1;        }    }    return achou;}Errada, pois é a rotina de busca de elementos em uma
fila circular. 
int atento( ){    int opc;    system("CLS");    printf("* * * FAÇA SUA ESCOLHA * * *\n\n");    printf(" 1-
Enfileirar Elemento \n");    printf(" 2- Desenfileirar Elemento \n");    printf(" 3- Listar Elementos
\n");    printf(" 4- Buscar Elemento na Fila \n");    printf(" 0- Sair \n\n");    printf(" Opção: ");   
scanf("%d", &opc);    return opc;}Errada, pois é a rotina de menu de escolhas para operações com
fila circular.
5  Código: 35697 - Enunciado: Diferentes representações gráficas são utilizadas para representar as
estruturas de dados. Cada estrutura de dados apresenta uma forma peculiar de representação
gráfica, de organização e manipulação de dados, que servem para diferenciar uma das
outras. Analise a figura a seguir e identifique o tipo de estrutura de dados que ela representa. 
 a) Lista.
 b) Pilha.
 c) Árvore.
 d) Vetor.
 e) Fila.
Alternativa marcada:
d) Vetor.
Justificativa: Resposta correta: Árvore.Na representação gráfica vetorizada, as ligações
indicadas refletem a estrutura de dados árvore binária. 
Distratores:Pilha. Errada, pois não apresenta em sua estrutura as características de base e topo,
por onde ocorrem o empilhamento e o desempilhamento de dados.Fila. Errada, pois não
representa uma estrutura sequencial com especificação da técnica FIFO.Vetor. Errada, pois não
apresenta uma estrutura unidimensional com apresentação de índices indicadores da posição de
memória ocupada pelo dado. Lista. Errada, pois não se refere a uma estrutura linear de dados.
0,00/ 1,00
6  Código: 35699 - Enunciado: As árvores são estruturas de dados que apresentam nós,
tecnicamente denominados vértices, que podem estar conectados a outros nós por meio de uma
linha de ligação, tecnicamente denominada aresta. Existem diversas formas de representar
graficamente a estrutura de dados árvore. Nesse contexto, analise a figura a seguir e identifique o
tipo de representação utilizada. 
 a) Representação por vetor de dados.
 b) Representação por inclusão.
 c) Representação por parênteses aninhados.
 d) Representação por indentação.
 e) Representação hierárquica.
Alternativa marcada:
b) Representação por inclusão.
Justificativa: Resposta correta: Representação por inclusão. Representação de uma árvore por
inclusão, pois essa estrutura reflete a forma em diagrama de Venn. 
Distratores: Representação por indentação. Errada, pois não apresenta a estrutura na forma
indentada.Representação hierárquica. Errada, pois não apresenta a estrutura em forma de
árvore.Representação por vetor de dados. Errada, pois a árvore é apresentada de forma
vetorizada.Representação por parênteses aninhados. Errada, pois não apresenta a estrutura na
forma de pareamento.
1,00/ 1,00
7  Código: 35712 - Enunciado: A estrutura de dados árvore é composta por um conjunto de
elementos que armazenam dados denominados nós. Enquanto o nó mais alto da árvore é
conhecido como raiz ou pai, o nó mais baixo é conhecido como folha ou terminal.Neste contexto,
veja a figura a seguir, analise as assertivas abaixo e marque a(s) alternativa(s) correta(s): 
I. Todo nó da árvore que não apresenta nenhum filho é chamado tecnicamente de nó folha ou nó
1,00/ 1,00
terminal.II. O nível da árvore indica a posição hierárquica em relação à raiz, ou seja, o nó A tem
nível 1; os nós B, C e D têm nível 2, e assim por diante.III. A altura ou profundidade é definida pelo
nível máximo de nós, ou seja, a árvore T tem altura igual a 3.IV. A subárvore da esquerda (B) tem
altura igual a 2, pois apresenta dois nós ligados a ela, (E) e (J), por exemplo.
 a) Apenas I e III estão corretas.
 b) Apenas II e III estão corretas.
 c) Apenas I, III e IV estão corretas.
 d) Apenas I e II estão corretas.
 e) Apenas I, II e IV estão corretas.
Alternativa marcada:
c) Apenas I, III e IV estão corretas.
Justificativa: Resposta correta: Apenas I, III e IV estão corretas.A afirmativa I está correta, pois o
nó-folha ou nó terminal não contém filhos.A afirmativa III está correta, pois a altura ou
profundidade refere-se ao nível máximo de nós que ela pode ter.A afirmativa IV está correta, pois
a subárvore da esquerda (B) tem altura igual a 2. 
Distrator:A afirmativa II está incorreta, pois a classificação dos níveis da árvore deve iniciar com
zero no nó-raiz.
8  Código: 35713 - Enunciado: Veja a seguinte descrição de estrutura de dados: "Suas operações de
inserção e remoção são realizadas pelo topo, com os respectivos nomes técnicos de push e
pop."Indique a qual tipo de estrutura de dados o trecho se refere.
 a) Árvore.
 b) Pilha.
 c) Fila.
 d) Grafo.
 e) Lista.
Alternativa marcada:
b) Pilha.
Justificativa: Resposta correta: Pilha.A estrutura de dados pilha é responsável pelos processos
de empilhamento (push) e desempilhamento (pop). 
Distratores:Árvore. Errada, pois não é uma estrutura de dados que realiza os processos de push e
pop. Seu processo é aleatório e balanceado, assim como os grafos.Lista. Errada, pois não é uma
estrutura de dados que realiza os processos de push e pop. Seu processo é input sequencial.Fila.
Errada, pois não é uma estrutura de dados que realiza os processos de push e pop. Seu processo
é FIFO.Grafo. Errada, pois não é uma estrutura de dados que realiza os processos de push e pop.
Seu processo é aleatório e balanceado, assim como as árvores.
1,00/ 1,00

Outros materiais