Jump to content
Fórum Script Brasil
  • 0

Lista Encadeada em Arquivo


joaogabriel97
 Share

Question

 

Preciso de ajuda,como faço para criar uma função para salvar uma lista encadeada em um arquivo,tentei varias coisas e não consegui.

#include <stdio.h>
#include <stdlib.h>
typedef struct celulaLista {
    int informacao;
    struct celulaLista *proximo;
} celula;

int main() {
    celula *pLista;
    int opcao = 0;
    void initLista(celula **pRecebido);
    void insertLista(celula **pRecebido);
    void buscaListaSimples(celula **pRecebido);
    void removeElementoListaSimples(celula **pRecebido);
    void salva(celula **pRecebido);
    int leValor(int *valorRecebido);
    pLista = (celula *)malloc(sizeof(struct celulaLista));
    initLista(&pLista);
    for(;;) {
        printf("\n1 - Inserir  ");
        printf("\n2 - Consultar ");
        printf("\n3 - Remover");
        printf("\n4 - Salvar em Arquivo");
        printf("\n5 - Sair \n ");
        scanf("%d", &opcao);
        opcao = leValor(&opcao);
        switch(opcao) {
            case 1:
                insertLista(&pLista);
                break;
            case 2:
                buscaListaSimples(&pLista);
                break;
            case 3:
                removeElementoListaSimples(&pLista);
                break;
            case 4:
                salva(&pLista);
                 break;
            case 5:     
                exit(0);
        }
    }
    return 0;
}
void initLista(celula **pRecebido) {
    (*pRecebido)->proximo = NULL;
}
void insertLista(celula **pRecebido) {
    celula *temporario;
    int valor;
    printf("\nInforme um Valor a ser Inserido : ");
    scanf("%d", &valor);
    temporario = (celula *)malloc(sizeof(celula));
    temporario->informacao = valor;
    temporario->proximo = (*pRecebido)->proximo;
    (*pRecebido)->proximo = temporario;
    
}
void buscaListaSimples(celula **pRecebido) {
    celula *temporario;
    if((*pRecebido)->proximo == NULL) {
        printf("Lista Vazia!\n");
    } else {
        temporario = (celula *)malloc(sizeof(celula));
        temporario = (*pRecebido)->proximo;
        while(temporario != NULL) {
            printf("Valor : %d\n", temporario->informacao);
            temporario = temporario->proximo;
        }
    }
}
void removeElementoListaSimples(celula **pRecebido) {
    celula *temporario;
    if((*pRecebido)->proximo == NULL) {
        printf("\nLista Vazia!");
    } else {
        temporario = (*pRecebido)->proximo;
        (*pRecebido)->proximo = temporario->proximo;
        free(temporario);
    }
}
int leValor(int *valorRecebido) {
    while((*valorRecebido > 4) || (*valorRecebido < 1)) {
        printf("Opcao Invalida. Informe novamente : \n");
        scanf("%d", &(*valorRecebido));
    }
    return(*valorRecebido);
}
void salva(celula **pRecebido){
    FILE *arquivo;
    arquivo = fopen("Arquivo.txt", "w");
    if(arquivo == NULL){
        printf("Erro na abertura do arquivo!");
    }
     else{
     }
     fclose(arquivo);
     printf("Salvo com Sucesso");
}

 

Edited by joaogabriel97
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...