All pastes #2121269 Raw Edit

Someone

public text v1 · immutable
#2121269 ·published 2012-02-24 11:20 UTC
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;    
}