Ir ao conteúdo
  • Cadastre-se
rsd_17

C listas ligadas simples e duplas

Recommended Posts

Ola estou a tentar aprender listas ligadas mas nao esta correndo muito bem,ja sei o basico de materia mas nao estou a saber aplicar.

então eu estou  a tentar desenvolver um programa em c que implemente uma lista ligada simples de numeros inteiros. 

E qeria fazer o basico que se pode fazer com listas: 

- mostrar no ecran os elementos que estão na lista

- inserir um novo elemento na lista (inicio,meio,fim)

-inserir um novo elemento de forma ordenado

- eliminar um elemento da lista 

 

 

neste momento estou a tentar apresentar a lista, mas ela esta vazia então nao tenho bem noção de como posso preenche-la, posso pedir valores ao utilizador? Eu procurei em varios sites mas nao entendia grande coisa do codigo, o que tenho neste momento é isto:
 

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

typedef struct inteiro{
    int num;    
    struct inteiro * prox;
}Inteiro;


int main(){
    
Inteiro *LISTA;
int count;
Inteiro *tmp;
int tam;

 LISTA= (Inteiro *) malloc(sizeof(Inteiro));
    if(!LISTA){
        printf("Sem memoria disponivel!\n");
        exit(1);
    }
    

    
    if(LISTA->prox == NULL){
        printf("Lista vazia!\n\n");
    }

    

    tmp = LISTA->prox;
    printf("Lista:");
    while( tmp != NULL){
        printf("%d", tmp->num);
        tmp = tmp->prox;
    }
    printf("\n        ");
    
    
    for(count=0 ; count < tam ; count++){
        printf("\nOrdem:");
    }
    
    for(count=0 ; count < tam ; count++){
        printf("%d", count+1);
        printf("\n\n");
    }
        
    
        
    

    free(LISTA);
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@rsd_17 Olá. Esse assunto de lista surgiu aqui e aí vi q precisava estudar bem a respeito desse ponto.

Meu instrutor me indicou esse material abaixo, é excelente. Segue o link:

http://www.ic.unicamp.br/~ra069320/PED/MC102/1s2008/Apostilas/Cap10.pdf

Também tem um exercício simples q criei depois de estudar com esse material e revisar as aulas do curso de C:

 

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

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

typedef struct lista Lista;

/* função de inicialização: retorna uma lista vazia */
Lista *inicializa() {
    return NULL; // retorna uma lista vazia
}

/* inserção no início: retorna a lista atualizada */
Lista* insere(Lista* l, int i) {

    Lista *novo = (Lista *) malloc(sizeof(Lista));

    novo->info = i;
    novo->prox = l;

    return novo;
}

/* função imprime: imprime valores dos elementos */
void imprime(Lista* l) {

    Lista *p = l;

    do {
        printf("Info: %2d\n", p->info);
        p = p->prox;
    } while (p != NULL);
}


void libera(Lista* l) {

    Lista *p = l;

    while (p != NULL) {
        Lista *t = p->prox; /* guarda referência para o próximo elemento */
        free(p); /* libera a memória apontada por p */
        p = t; /* faz p apontar para o próximo */
    }
}


int main() {

    Lista *l;

    l = inicializa(); // inicializa a lista

    int cont = 0, x;

    do {
        printf("Digite o numero para inserir ou 0 para sair: ");
        scanf("%d", &x);
        fflush(stdin);
        if (x != 0) {
            l = insere(l, x);
            cont++;
        }
    } while (x != 0);

    printf("\nQuantidade de numeros inseridos: %d\n\n", cont);

    imprime(l);

    libera(l);

    return 0;
}

No link q passei é explicado bem sobre cada função q tem no código acima. Boa sorte!

adicionado 0 minutos depois

Esse exercício é apenas para "entender" o conceito de lista encadeada. Espero q ajude!

adicionado 5 minutos depois

Segue o link do tópico q me fez ver q precisava estudar sobre listas hehe:

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×