rendered paste body#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;
}