Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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;
}

 

Editado por Simon Viegas
Inserir tag CODE

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






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

×