#include #include #include #define MAX 10 // Tipo base dos elementos da lista typedef struct elementos { char nome[50]; // Outros elementos } t_elemento; // Estrutura da lista typedef struct lista { t_elemento vetor[MAX];//vet que armazena elem. da pilha int n; // posicao (indice) do ultimo elemento da lista } t_lista; // tipo lista t_lista criar(){ t_lista lista; lista.n = -1; return lista; } int isVazia(t_lista * lista){ return (lista->n == -1); } int isCheia(t_lista * lista){ return (lista->n == MAX-1); } int getTamanho(t_lista * lista) { return lista->n + 1; } t_elemento * getElemento(t_lista * lista, int pos) { if ((pos > lista->n) || (pos < 0)) return 0; return &(lista->vetor[pos]); } int compara(t_elemento dado1, t_elemento dado2){ return strcmp(dado1.nome, dado2.nome); } int getPosicao(t_lista * lista, t_elemento dado){ int i; for (i = 0; i <= lista->n; i++) if (compara(lista->vetor[i], dado) == 0) return i; return -1; } int deslocaEsquerda(t_lista * lista, int pos) { int i; for (i=pos; i<=(lista->n); i++) lista->vetor[i] = lista->vetor[i+1]; return 1; } int deslocaDireita(t_lista * lista, int pos) { int i; for (i=lista->n + 1; i>pos; i--) lista->vetor[i] = lista->vetor[i-1]; return 1; } int inserir (t_lista * lista, int pos, t_elemento dado) { if ( isCheia(lista) || (pos > lista->n + 1) || (pos < 0) ) return 0; deslocaDireita(lista, pos); lista->vetor[pos] = dado; (lista->n)++; return 1; } int remover (t_lista *lista, int pos) { if ((pos > lista->n) || (pos < 0)) return 0; deslocaEsquerda(lista, pos); (lista->n)--; return 1; } int main(){ //Criando printf("\n\nCriando Lista..."); t_lista listinha = criar(); t_elemento a, b, c; printf("Digite o primeiro nome: "); scanf("%s",&a.nome); getchar(); printf("Digite o Segundo nome: "); scanf("%s",&b.nome); getchar(); printf("Digite o terceiro nome: "); scanf("%s",&c.nome); //Inserindo printf("\n\nInserindo..."); inserir (&listinha, 0, a); inserir (&listinha, 1, b); inserir (&listinha, 2, c); //Mostrando printf("\n\nMostrando..."); printf("\nNome1: %s", getElemento(&listinha, 0)->nome); printf("\nNomes: %s", getElemento(&listinha, 1)->nome); printf("\nNome3: %s", getElemento(&listinha, 2)->nome); //Buscando e mostrando printf("\n\nBuscando mostrando..."); printf("\nBuscou o nome: %s", getElemento(&listinha, getPosicao(&listinha, b))->nome ); //Apagando um nome printf("\n\nApagando(posicao 2)..."); remover(&listinha, 2); return 0; }