Ir ao conteúdo

Posts recomendados

Postado

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

 

Postado

@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:

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!