Programação de Baixo Nível
Prof. Márcio Sarroglia Pinho


Exercício sobre Lista encadeadas

Exercício I

Dada uma struct capaz de armazenar os dados de uma pessoa:




typedef struct temp {
    char nome[100];
    int idade;
    struct temp* prox;
} TPESSOA;


Dada uma variável global que aponta o inicio de uma lista de pessoas:

TPESSOA *inicio;

Considere a seguinte função de impressão:

#include <stdio.h>
void imprimeLista(TPESSOA* start)
{
    TPESSOA* aux;
        aux = start;
        if (start == NULL) {
        printf("Lista Vazia !\n");
        return; // encerra o método aqui
        }
        printf("----- INICIO DA LISTA -----\n");
        while(aux != NULL) {
        printf("Nome: %s  - Idade: %d\n", aux->nome, aux->idade);
        aux = aux->prox;
        }
}

E crie as seguintes funções:
 
void InsereNoInicio(int idade, char *nome);
int BuscaNome(char * nome, int *idade); // retorna 1 se achar e 0 se não achar
void InsereNoFinal(int idade, char *nome);
void InsereEmOrdemDeNome(int idade, char *nome);
int Remove(char *nome); // retorna 1 se achar e 0 se não achar



Exercício II

Crie uma lista de ponteiros para objetos do tipo TPessoa, de forma que esta lista crie uma ordenação para a lista de pessoas da questão anterior.

typedef struct temp
{
    TPESSOA *info;
   
struct temp *prox;
}TNODO;


TNODO* ListaOrdenada;

void InserePessoaEmOrdem(TPESSOA* aux)
{
    // Esta função deve cria um TNODO e colocá-lo em uma lista
    // de acordo com a ordem que se deseja para os objetos
    // da lista de pessoas
    // Note que neste ponte assume-se que a lista de pessoas já existe.
}
void InserePessoas(TPESSOA* start)
{
    TPESSOA* aux;
    aux = start;
    if(start == NULL) {
        printf("Lista Vazia !\n");
        return; // encerra o método aqui
    }
    printf("----- INICIO DA LISTA -----\n");
    while(aux != NULL) {
        InserePessoaEmOrdem(aux);
        aux = aux->prox;
    }
}


FIM.