#include <stdlib.h> #include <values.h> #include "corotinas.h" #include "colecao.h" struct colecao { int info; struct colecao *prox; }; Colecao *colecaoCria(void) { return NULL; } Colecao *colecaoInsere(Colecao *ci, int v) { Colecao *n = (Colecao *) malloc(sizeof(Colecao)); if (n != NULL) { n->info = v; n->prox = ci; } return n; } void colecaoLibera(Colecao *ci) { Colecao *prox, *n = ci; while (n != NULL) { prox = n->prox; free(n); n = prox; } } /* * Corpo da corotina que implementa o iterador */ static int iteraColecao (int colecao) { /* Guarda a colecao que deve ser "iterada" */ Colecao *ci = (Colecao *) colecao; /* Retorna o controle para quem a iniciou */ coro_yield(NO_PARAM); /* complete o resto do código! */ return MININT; } /* * Cria uma corotina com corpo iteraColecao * para percorrer a colecao */ void *criaIterador (Colecao *ci) { /* substitua o comando abaixo pela implementação da função */ return (void *) NULL; } int ativaIterador (void *iterador) { /* substitua o comando abaixo pela implementação da função */ return MININT; } void destroiIterador (void *iterador) { /* preencha o resto do código! */ }