Buscar

lista linear sequencial

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

#include <stdio.h>
#define MAX 100
#define true 1
#define false 0
typedef int bool;
typedef int KEY;
typedef struct{
KEY chave;
} REGISTRO;
typedef struct {
REGISTRO A[MAX];
int nroElem;
} LISTA;
void initialize(LISTA *lista){ 
lista->nroElem = 0; 
}
int count(LISTA *lista){ 
return lista->nroElem; 
}
void print(LISTA *lista){
int i;
printf("Lista: [");
for(i=0;i<lista->nroElem; i++)
printf("%d%c", lista->A[i].chave,(i+1)==lista->nroElem?0:44);
printf("]\n");
}
int buscaIndice(LISTA *lista, KEY chave){
int i = 0;
while (i < lista->nroElem){
if(chave == lista->A[i].chave) return i;
else i++;
}
return -1;
}
bool add(LISTA *lista, REGISTRO reg, int i){
int j;
if((lista->nroElem==MAX) || (i<0) || (i>lista->nroElem))
return false;
for(j=lista->nroElem; j>i ; j--) 
lista->A[j] = lista->A[j-1];
lista->A[i] = reg;
lista->nroElem++;
return true;
}
bool delete(LISTA *lista, KEY chave){
int pos, j;
pos = buscaIndice(lista,chave);
if(pos==-1) return false;
for(j=pos; j<lista->nroElem-1;j++)
lista->A[j] = lista->A[j+1];
lista->nroElem--;
return true;
}
void clear(LISTA *lista){
lista->nroElem = 0; 
}
void main(void) {
LISTA lista;
initialize(&lista);
printf("Inicio count: %d\n",count(&lista));
 
REGISTRO r1,r2,r3,r4,r5;
r1.chave = 10; r2.chave=20; r3.chave=30; r4.chave=40;
add(&lista,r1,0);
add(&lista,r2,1);
add(&lista,r3,2);
add(&lista,r4,2);
print(&lista);
printf("count: %d\n",count(&lista));
delete(&lista,40);
print(&lista);
printf("count: %d\n",count(&lista));
int i;
}

Outros materiais