Baixe o app para aproveitar ainda mais
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
Compartilhar