Ir para conteúdo
Fórum Script Brasil
  • 0

Lista Encadeada em Arquivo


joaogabriel97

Pergunta

 

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");
}

 

Editado por joaogabriel97
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...