#include #include "lists.h" char* cidades[] = { "Sao Paulo","Campinas","Indaiatuba","Capivari", "Valinhos","Jundiai","Itupeva","Monte Mor", "Hortolandia", /*** "Pedreira","Jaguariuna","Salto","Itu","Porto Feliz","Tiete", "Piracicaba","Franco Da Rocha", "Poa", "Ibiuna", "Barueri", "Santana do Parnaiba", "Bom Jesus de Pirapora","Araçariguama", "Cabreuva","Holambra","Paulinia","Artur Nogueira","Limeira", **/ "Americana","Sumare",NULL }; /** Escreve um string. P/ ser usada no lugar da função que libera um 'valor' da lista Neste exemplo os 'valores' não são alocados dinamicamente portanto NÃO PODEM ser liberados com free(). **/ void nop(void* p){ printf("liberando: %s\n",(char*)p); } /** Cria uma lista a partir do vetor cidades[]. O parâmetro b indica se os nomes devem ser inseridos no início ou ao final da lista. **/ LIST makeList1(int b){ LIST list = newList(); int i; for(i = 0; cidades[i] != NULL; i++) if(b) frontInsert(list,cidades[i]); else rearInsert(list,cidades[i]); return list; } /** Cria uma lista invertida a partir de uma lista passada como parâmetro. Os nomes são retirados da lista original e inseridos na nova lista. **/ LIST invertList(LIST list){ LIST aux = newList(); while(listSize(list) > 0) frontInsert(aux,removeFirst(list)); return aux; } /** Escreve os nomes contidos numa lista (o tempo é quadrático em relação ao tamanho da lista) **/ void printList(LIST list){ int i; for(i = 0; i < listSize(list); i++) printf("(%d):%s\n",i,(char*)getElement(list,i)); } /** testa as operações com as listas. **/ void test(int b, char* txt){ LIST lista1 = makeList1(b); printf("======== Lista %s ========\n",txt); printList(lista1); printf("======= Lista %s Invertida =======\n",txt); lista1 = invertList(lista1); printList(lista1); printf("======= liberando a lista %s ======\n",txt); freeList(lista1,nop); } int main(int argc, char *argv[]) { test(TRUE,"UM"); test(FALSE,"DOIS"); system("PAUSE"); return 0; }