Buscar

2021_1_A2_ESTRUTURA_DE_DADOS_1_1INF34A_MATHEUS_BOUSQUET_BANDINI_AIA

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

Prévia do material em texto

FOLHA DE QUESTÕES
CURSO: DISCIPLINA:
CIÊNCIA DA COMPUTAÇÃO ESTRUTURAS DE DADOS 1
ASS.: NOME:
Professor: MATHEUS BANDINI
DATA LIMITE: Nº de ordem GRAU: PROVA: TURMA MATRÍCULA:
23/06/2021 A2-AIA
 
1INF34A
LEIA ATENTAMENTE ÀS INSTRUÇÕES:
1) A prova deve ser entregue em um arquivo único prova_a1.c com um arquivo auxilizar prova_a1.h. O
arquivo .c deve possuir um menu no qual permite-se escolher qual questão deve-se executar, além
de uma opção para sair do programa.
2) A entrega deve ser feita exclusivamente pelo ambiente do Canvas
Considere a existência de um tipo abstrato pilha de números inteiros, cuja a interface é definida no
arquivo stack.h da seguinte forma: 
typedef struct stack Tstack; 
Tstack *create (void); 
void push (Tstack *p, int elem); 
int pop (Tstack *p); 
void clear (Tstack *p); 
int empty (Tstack *p); 
Leve em consideração, também, a existência de um tipo abstrato fila de números inteiros, cuja a
interface é definida no arquivo queue.h da seguinte forma: 
typedef struct queue Tqueue; 
Tqueue *create (void); 
Tqueue *insert (Tqueue *f, int elem); 
int remove (Tqueue *f); 
void clear (Tqueue *f); 
int empty (Tqueue *f);
Questão 1 (2,0 pontos) Implemente uma função que receba uma pilha p, e some todos os valores
pares guardados em p. Ao final da execução desta função, p permanecerá com todos os seus
elementos e retorna-se a soma. O protótipo desta função é o seguinte: 
int soma_par (Tstack *p);
Questão 2 (2,0 pontos) Usando somente estas operações, escreva uma função que, dada uma fila f,
retorne uma pilha, contendo todos os elementos de f, e obedecendo a ordem de entrada dos inteiros na
fila f, isto é, o primeiro inteiro que sair da fila f deve ser o primeiro inteiro a sair da pilha. Não é possível
alterar a ordem dos elementos da fila de entrada. A função deve obedecer o seguinte protótipo: 
Tstack *Fila2Pilha (Tqueue *f);
Questão 3 (2,0 pontos) Considerando as seguintes declarações de lista encadeada: 
struct list{ 
int info; 
struct list *next; 
}Tlist;
struct circular_list{ 
int info; 
struct list *next; 
}TCL;
Escreva a função para receba uma lista linear e retorne uma lista circular, preservando a lista de
entrada. O protótipo da função deve ser o seguinte: 
TLC *gera_circular (Tlista *l);
Questão 4 (2,5 pontos) Leve em consideração, também, a existência de um tipo abstrato fila de
números inteiros, cuja a interface é definida no arquivo list.h da seguinte forma:
struct list{ 
int info; 
struct list *next; 
}Tlist; 
Tlist *create ();
Tlist *ordered_insert (Tlis *l, int elem);
void print_list (Tlist *l);
Tlist *search (Tlist *l, int elem);
Tlist *remove_elem (Tlist *l, int elem);
void clear (Tlist *l);
Escreva uma função em C que cria uma lista encadeada com 60 elementos de inteiros 1 a 60 e realize
um sorteio da mega sena. O sorteio deve ser feito gerando seis números aleatórios entre 1 e 60,
retirando-os da lista inicial e inserindo-os na lista de sorteados que deve ser retornada. Cada número
sorteado deve ser removido da lista para evitar que o mesmo número seja sorteado duas vezes e um
número só pode ser inserido na lista de sorteados se ele existir na lista inicial. O protótipo desta função
é o seguinte: 
Tlist *mega_sena ();
Questão 5 (1,5 ponto) Considere a mesma interface list.h da questão 4. Escreva uma função em C
que, dada uma lista l qualquer, realize a impressão inversa dos elementos. Exemplo: lista com os
seguintes elementos nessa ordem: 1,2,3,4,5,6, a impressão deve ser: 6,5,4,3,2,1. A lista original deve
ser mantida. O protótipo desta função é o seguinte: 
void imprime_invertido (Tlist *l);
Dica: utilize uma estrutura auxiliar de outro tipo para cumprir a tarefa

Continue navegando

Outros materiais