Jump to content
Fórum Script Brasil

Question

Descrição: Dev-C++ é um ambiente de desenvolvimento integrado livre que utiliza os compiladores do projeto GNU para compilar programas para o sistema operacional Microsoft Windows.

Suporta as linguagens de programação C e C++, e possui toda a biblioteca ANSI C.

Atividade proposta: Criar uma lista ligada para armazenar dados de um aluno e implementar operações sobre essa lista

1 - Procedimentos para a realização da atividade: Para criar uma ligada você precisará de uma struct, que armazene os dados e o ponteiro para a próxima posição, por exemplo: struct lista { int info; struct lista* prox; }; typedef struct lista Lista;

2 - A alocação de memória para a lista deve ser feita por meio da função malloc(), além disso precisamos inicializá-la.

3 - implemente a função para remover um aluno na lista.

4 - implemente uma função que permita imprimir os dados armazenados em uma lista.

5 - E para finalizar seu trabalho com listas, implemente uma função que permita procurar um determinado elemento na lista.

Checklist:

Criar uma struct para armazenar dados de um aluno em forma de lista;

Inicializar a lista;

Criar uma função para inserir um aluno na lista;

Criar uma função para remover um aluno na lista;

Criar uma função para imprimir os dados na lista;

Criar uma função para procurar um aluno na lista;

Link to post
Share on other sites

2 answers to this question

Recommended Posts

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

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

void inserir(Lista *l){
    Lista* novo= (Lista*)malloc(sizeof(Lista));
    if(!novo){
        printf("SEM MEMORIA!\n");
        exit(1);
    }
    printf("\nInforme um valor: ");
    scanf("%d", &novo->info);
    if(l!=NULL){
        l->prox=novo;
    }
    else{
        Lista *aux = l-> prox;
        while(aux->prox!= NULL){
            aux=aux->prox;
        }
        aux->prox=novo;
    }
}

Lista *retira_ultimo(Lista *l){
    if(l!=NULL){
        printf("Lista vazia.\n");
        return NULL;
    }
    else{
        Lista *ultimo = l->prox, *penultimo = l->prox;
        while(ultimo->prox!=NULL){
            penultimo=ultimo;
            ultimo=ultimo->prox;
        }
        penultimo->prox=NULL;
        return ultimo;
    }
}
main(){
    int op=1;
    Lista *l= (Lista*)malloc(sizeof(Lista));
    l ->prox = NULL;
    Lista* novo= (Lista*)malloc(sizeof(Lista));

    inserir(l);
    while(op==1){
        printf("Inserir novo elemento: 1 <sim> outro valor <não> : ");scanf("%d", &op);
        if (op==1)
            inserir(l);
    }

    retira_ultimo(l);

    printf("\n\nA lista depois de retirar o ultimo numero digitado e o seguinte.\n\n");
    if(l!=NULL){
        printf("Lista vazia.\n");
    }
    Lista *aux = l->prox;
    while(aux!=NULL){
        printf("%d\n", aux->info);
        aux=aux->prox;
    }

    return 0;
}

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148692
    • Total Posts
      644524
×
×
  • Create New...