Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- /* Definimos a struct "island" */
- typedef struct island {
- const char *name;
- const char *opens;
- const char *closes;
- struct island *next;
- } island;
- /* Incluímos o header após a declaração da struct para evitar erros de
- * compilação */
- // Declaração das funções
- void display(island *start);
- island* create(char *name);
- void release(island *start);
- int main(int argc, char *argv[])
- {
- // Criando as ilhas para formar o itinerário
- island amity = {"Amity", "09:00", "17:00", NULL};
- island craggy = {"Craggy", "09:00", "17:00", NULL};
- island isla_nublar = {"Isla Nublar", "09:00", "17:00", NULL};
- island skull = {"Skull", "09:00", "17:00", NULL};
- island shutter = {"Shutter", "09:00", "17:00", NULL};
- // Configurando os itinerários
- amity.next = &craggy;
- craggy.next = &isla_nublar;
- isla_nublar.next = &skull;
- skull.next = &shutter;
- // Mostramos as informações do itinerário a partir da ilha "Craggy"
- display(&amity);
- // Usamos a função create para criar uma nova instância de island
- island *hawaii = create("Hawaii");
- // Atribuímos uma próxima ilha para que Hawaii seja impressa
- hawaii->next = &skull;
- // Imprimimos informações sobre hawaii
- puts("\nThe newly created island:");
- display(hawaii);
- release(&amity);
- return 0;
- }
- void display(island *start)
- {
- // O ponteiro *i recebe a ilha passada como parâmetro
- island *i = start;
- /* Iteramos sem criar uma variável, pois i será nossa referência até que
- * a variável "next" da struct seja NULL (não há mais ilhas para ir)
- */
- for (; i->next != NULL; i = i->next)
- {
- printf("Name: %s open: %s-%s\n", i->name, i->opens, i->closes);
- }
- }
- // Aqui temos a função que cria uma nova island e a retorna como ponteiro.
- island* create(char *name)
- {
- island *i = malloc(sizeof(island));
- i->name = strdup(name);
- i->opens = "09:00";
- i->closes = "17:00";
- i->next = NULL;
- return i;
- }
- // Temos que liberar a memória utilizada pela aplicação
- void release(island *start)
- {
- island *i = start;
- island *next = NULL;
- for(; i != NULL; i = next) {
- next = i->next;
- free(i->name);
- free(i);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement