Skip to content

Lista com ponteiros, Estrutura de Dados.

Boa noite a todos,

Como ainda não produzi nada muito bom hoje em casa (no lab produzi algo relaciona a xml-rpc que pretendo postar em breve), resolvi postar mais um dos 198578951 exercicios que estou tendo que fazer para estrutura de dados. O Exercicio de hoje é nada mais nada menos que uma implementação de uma Lista com Ponteiros, ou seja, ela não tem limite de elementos (é claro, se a memoria for infinita).

Como no exercicio anterior, o enunciado fica para a pagina inteira pois é muito grande.

O exercicio resolvido você encontra aqui.

Uma lista ordenada pode conter Strings de qualquer comprimento < 10000; • esta lista tem um número de elementos máximo fixo (100) e é implementada como um vetor de ponteiros para Strings; – utilize as rotinas de lista com vetor que você implementou para a agenda. • Um novo String é lido primeiramente para dentro de uma variável auxiliar qualquer; – então é alocada memória para exatamente o seu tamanho e ele é copiado para esta área. Para copiar um String utilize strcpy(); – por fim um lugar na lista é encontrado para ele. A posição escolhida do vetor de ponteiros da lista é instanciada através da atualização dos valores do ponteiro da posição do String na lista com o endereço do string. Pseudo-código: constantes MAXLISTA = 100; tipo tLista { // Vetor de ponteiros para caracter. caracter *dados[MAXLISTA]; inteiro último; }; • Importante: observe que criando uma variável do tipo tLista você não vai estar alocando memória para os strings a serem lidos, apenas para os ponteiros para eles. Para verificar o comprimento de um String: – utilize a função strlen(); – esta função devolve o comprimento (em caracteres imprimíveis) de um string. – Protótipo: int strlen(char *p); #include
#include
#include
char p[90] = "Carro";
main() {
printf("%i", strlen(p));
}

• Imprime: 5
• Para copiar um String:
– utilize a função strcpy();
– esta função copia o conteúdo de um string (dado por um apontador) para a posição de memória dada por outro apontador.
– Protótipo: char *strcpy(char *destino, char *fonte);

#include
#include
#include
char p[90] = "Carro";
char lata[20];
main() {
strcpy(lata, p));
printf("s%", lata);
}
• Imprime: Carro

Detalhes:

• Como você não sabe o comprimento do String que o usuário vai digitar, use primeiro uma variável auxiliar grande (10000 posições) para guardar o que foi
digitado;
• todas as funções de lista ordenada implementadas anteriormente devem ser reimplementadas para utilizar estes Strings;
• para a leitura de um String utilize scanf("%s", entrada).

Published inAprendendoCEstrutura de DadosSistemas Digitais

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.