Baixe o app para aproveitar ainda mais
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; }
Compartilhar