TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Estrutura De Dados

Trabalho Universitário: Estrutura De Dados. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  14/11/2014  •  902 Palavras (4 Páginas)  •  261 Visualizações

Página 1 de 4

Estrutura de Dados

Vetores em C

Essas estruturas são tipos de dados compostos ou estruturados, ou seja, elas são formadas de estruturas de dados mais simples que existem na linguagem. A forma mais simples é o vetor unidimensional, que pode ser definido abstratamente como um conjunto finito e ordenado de elementos homogêneos. Por homogêneo entendemos que todos os elementos no vetor precisam ser do mesmo tipo.

As duas operações básicas que acessam um vetor são a extração e o armazenamento. A extração é uma operação que permite obter o valor por meio de um índice em um determinado vetor. O armazenamento é uma operação que permite guardar um valor em uma determinada posição especificada pelo índice.

O menor índice de um vetor é chamado de limite mínimo e é sempre 0. O maior é o limite máximo. Se lower é o limite mínimo de um vetor e upper o limite máximo, o tamanho do vetor é dado por upper – lower + 1. Por exemplo, no vetor a[100], o limite mínimo é 0, o limite máximo é 99 e o tamanho é 100.

Uma técnica muito útil é declarar uma constante para guardar o tamanho do vetor, afim de em casos de alterações no tamanho, fazemos isto a partir de um único local. Por exemplo:

#define TAMANHO 100;

int a[TAMANHO];

for(i=0; i < TAMANHO; i++);

Implementação de estruturas em C

Uma estrutura é um grupo de itens no qual cada item é identificado por um identificador próprio, sendo cada um deles conhecido como um membro da estrutura. (Em várias outras linguagens de programação, uma estrutura é chamada de “registro” e um membro é chamado de “campo”).

Uma primeira alternativa de declaração de estrutura:

struct{

char first[10];

char midinit;

char last[20];

}sname, ename;

Como alternativa, podemos atribui um nome à estrutura e, em seguida, declarar as variáveis por meio desse nome. Por exemplo:

struct nometipo {

char first[10];

char midinit;

char last[20];

};

struct nometipo sname, ename;

Para obter o máximo de clareza no programa, recomenda-se que seja declarado um nome para cada estrutura e que em seguida as variáveis sejam declaradas usando-se o nome.

typedef struct {

char first[10];

char midinit;

char last[20];

}NOMETIPO;

NOMETIPO sname, ename;

Os nomes de estruturas são convencionalmente escritos com letras minúsculas, mas os especificadores do typedef são escritos com letras maiúsculas ao apresentar programas em C.

Assim que uma variável é declarada podemos acessar as estruturas:

printf(“%s”, sname.first);

ename.midinit = ‘m’;

Um membro de uma estrutura pode ser declarado como outra estrutura.

struct addrtype {

char straddr[40];

char city[10];

char state[2];

char zip[5];

} ;

podemos declarar um novo nome de estrutura, nmadtype, com:

struct nmadtype {

struct nametype name;

struct addrtype address;

} ;

Se declararmos duas variáveis:

struct nmadtype nmad1, nmad2;

os seguintes comandos serão válidos:

nmad1.name.midinit = nmad2.name.midinit;

nmad2.address.city[4] = nmad1.name.first[1];

for ( i = l ; i < 10; i++)

nmad1.name.first[i] = nmade2.name.first[i];

Observação:

Duas estruturas não pode ser submetidas a uma comparação de igualdade numa única operação em C.

if(e.nmaddr.name == s.nmad.name) e sim if(e.nmaddr.name.midinit == s.nmad.name.midinit)

Alocação de memória

Ao se declarar uma variável qualquer, o compilador deixa reservado um espaço suficiente na memória para armazená-la

int a; // 4 bytes

float x; // 4 bytes

double y; // 8 bytes

char c; // 1 byte

char *c; // 4 bytes

Ao fazer a alocação estática, apenas o espaço necessário na memória é reservado.

Quando se declara um vetor, o valor entre colchetes indica quantas vezes o espaço de memória necessário para o tipo básico será alocado.

char v[100]; // 100 * sizeof(char) = 100 bytes

int v[100]; // 100 * sizeof(int) = 400 bytes

float vf[200]; // 200 * sizeof(float) = 800 bytes

double z[1000]; // 1000 * sizeof(double) = 8000 bytes

Pode-se utilizar: sizeof(v)

Pode ser utilizado para descobrir o tamanho de uma string?

A referência a uma posição de um vetor indica o cálculo de uma posição de memória a partir do início do vetor

float x[1000];

//

...

Baixar como (para membros premium)  txt (6.6 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com