Lista Simplesmente Encadeada inserindo no começo

    Autor Mensagem
    xxxagilianxxx
    Veterano
    # nov/11


    Como eu faço pra fazer uma lista que insere os elementos no começo???
    Eu já comecei... e meu programa tá dividido em três arquivos: main, lista.h, lista.c.

    olha o que eu fiz:

    -----------------------------------------------------------
    MAIN
    ----------------------------------------------------------

    #include <stdio.h>
    #include <stdlib.h>
    #include "lista03.h"

    int main()
    {
    printf("3) Idem ao anterior montando uma lista simplesmente encadeada (sem descritor);\n");

    Lista *L = inicializa();
    int valor, i;
    i=0;

    printf("\n\n\nDIGITE OS VALAORES: \n");
    scanf("%d", &valor);
    while(valor!=-1)
    {
    L = insere(L, valor);
    scanf("%d", &valor);
    }

    imprime(L);

    return 0;
    }


    --------------------------------------------------------------
    .h
    --------------------------------------------------------------

    #ifndef LISTA03_H_INCLUDED
    #define LISTA03_H_INCLUDED

    typedef struct xxx Lista;

    Lista* inicializa();

    Lista* insere(Lista *L , int valor);

    void imprime(Lista *L);

    #endif // LISTA03_H_INCLUDED


    --------------------------------------------------------------
    .c
    --------------------------------------------------------------
    #include <stdio.h>
    #include <stdlib.h>
    #include "Lista03.h"

    struct xxx
    {
    int info;
    struct xxx *prox;
    };


    Lista* inicializa()
    {
    return NULL;
    }

    Lista* insere(Lista *L, int valor)
    {
    Lista *novo = (Lista*) malloc(sizeof(Lista));
    Lista *p = L;

    novo->info = valor;
    novo->prox = NULL;

    while(p->prox!=NULL)
    {
    p=p->prox;
    }
    p->prox = novo;

    return L;
    }


    void imprime(Lista *L)
    {
    Lista *p = L;
    while(p!=NULL)
    {
    printf("%d", p->info);
    p = p->prox;
    }
    }

    EternoRocker
    Veterano
    # nov/11
    · votar


    Cara...

    Boa sorte aí !!!

    E só lamento por vc.

    ~:0)

    Simonhead
    Veterano
    # nov/11
    · votar


    Boa sorte aí !!!

    2.

    Viciado em Guarana
    Veterano
    # nov/11
    · votar


    Nem sei!

    Igão
    Veterano
    # nov/11 · Editado por: Igão
    · votar


    xxxagilianxxx

    Cara, eu to vendo aqui que você quer fazer uma lista pra inserir os elementos no começo né? Tipo, você já começou e dividiu o seu programa em três arquivos: main, lista.h, lista.c. Aí você fez assim:

    -----------------------------------------------------------
    MAIN
    ----------------------------------------------------------

    #include <stdio.h>
    #include <stdlib.h>
    #include "lista03.h"

    int main()
    {
    printf("3) Idem ao anterior montando uma lista simplesmente encadeada (sem descritor);\n");

    Lista *L = inicializa();
    int valor, i;
    i=0;

    printf("\n\n\nDIGITE OS VALAORES: \n");
    scanf("%d", &valor);
    while(valor!=-1)
    {
    L = insere(L, valor);
    scanf("%d", &valor);
    }

    imprime(L);

    return 0;
    }


    --------------------------------------------------------------
    .h
    --------------------------------------------------------------

    #ifndef LISTA03_H_INCLUDED
    #define LISTA03_H_INCLUDED

    typedef struct xxx Lista;

    Lista* inicializa();

    Lista* insere(Lista *L , int valor);

    void imprime(Lista *L);

    #endif // LISTA03_H_INCLUDED


    --------------------------------------------------------------
    .c
    --------------------------------------------------------------
    #include <stdio.h>
    #include <stdlib.h>
    #include "Lista03.h"

    struct xxx
    {
    int info;
    struct xxx *prox;
    };


    Lista* inicializa()
    {
    return NULL;
    }

    Lista* insere(Lista *L, int valor)
    {
    Lista *novo = (Lista*) malloc(sizeof(Lista));
    Lista *p = L;

    novo->info = valor;
    novo->prox = NULL;

    while(p->prox!=NULL)
    {
    p=p->prox;
    }
    p->prox = novo;

    return L;
    }


    void imprime(Lista *L)
    {
    Lista *p = L;
    while(p!=NULL)
    {
    printf("%d", p->info);
    p = p->prox;
    }
    }


    Bem, eu não entendo nada sobre isso não cara, mas boa sorte aí...

    russobass
    Veterano
    # nov/11 · Editado por: russobass
    · votar


    nossa viajei!!

    xxxagilianxxx
    Veterano
    # nov/11
    · votar


    legal, com sorte eu já estou ... mas alguém mais deseja expressar qualquer coisa a respeito do programa? (exceto o Igão que já demonstrou toda sua criatividade rsrsrs (boa, boa))

    Excelion
    Veterano
    # nov/11
    · votar


    Credo

    The Blue Special Guitar
    Veterano
    # nov/11
    · votar


    De certa forma é uma degradação para a linguagem C ser publicada no OT. Dennis Ritchie vai te dar uma surra no dia que você morrer.

    Igão
    Veterano
    # nov/11
    · votar


    xxxagilianxxx

    o/

    Diga aí que você não estava esperando algo útil no final, uahuahu :P

    xxxagilianxxx
    Veterano
    # nov/11
    · votar


    valeu aí gente mas já consegui a resposta:

    -----------------------------------------------------------
    MAIN
    ----------------------------------------------------------
    #include <stdio.h>
    #include <stdlib.h>
    #include "lista03.h"

    int main()
    {
    printf("3) Idem ao anterior montando uma lista simplesmente encadeada (sem descritor);\n");

    Lista *L = inicializa();
    int valor, i;
    i=0;

    printf("\n\n\nDIGITE OS VALAORES: \n");
    scanf("%d", &valor);
    while(valor!=-1)
    {
    L = insere(L, valor);
    scanf("%d", &valor);
    }

    imprime(L);

    return 0;
    }


    --------------------------------------------------------------
    .h
    --------------------------------------------------------------

    #ifndef LISTA03_H_INCLUDED
    #define LISTA03_H_INCLUDED

    typedef struct xxx Lista;

    Lista* inicializa();

    Lista* insere(Lista *L , int valor);

    void imprime(Lista *L);

    #endif // LISTA03_H_INCLUDED


    --------------------------------------------------------------
    .c
    --------------------------------------------------------------

    #include <stdio.h>
    #include <stdlib.h>
    #include "Lista03.h"

    struct xxx
    {
    int info;
    struct xxx *prox;
    };


    Lista* inicializa()
    {
    return NULL;
    }

    Lista* insere(Lista *L, int valor)
    {
    Lista *novo = (Lista*) malloc(sizeof(Lista));
    Lista *p = L;
    Lista *ANTp = NULL;

    novo->info = valor;
    novo->prox = NULL;

    if(L==NULL)
    {
    L = novo;
    }
    else{
    while(p!=NULL)
    {
    ANTp = p;
    p=p->prox;
    }
    ANTp->prox = novo;
    }

    return L;
    }


    void imprime(Lista *L)
    {
    Lista *p = L;
    while(p!=NULL)
    {
    printf("%d ", p->info);
    p = p->prox;
    }
    }


    ps: Dennis Ritchie???
    pra "...sepultura, para onde tu vais, não há obra, nem indústria, nem ciência, nem sabedoria alguma".

    _ Duvido muito da surra

      Enviar sua resposta para este assunto
              Tablatura   
      Responder tópico na versão original
       

      Tópicos relacionados a Lista Simplesmente Encadeada inserindo no começo