Work
#include
#include "funcoes.h"
void inicializa ( Produto * L)
{
listaProd * aux; aux = (listaProd *) malloc(sizeof(listaProd)); if (aux==NULL) { printf("Problema de alocação") exit(1); }
aux->ini = -1; aux->fim = -1;
return aux;
}
Produto consulta ( Produto * L, int posicao)
{
Produto p; strcpy(p.nome,""); p.cod=0; p.preco=0; if ( (posicao > L.fim - L.inicio + 1 ) || (posicao < 1)) return p; else return L.inicio+posicao-1]; }
void insere (listaProd * L, int posicao, Produto p)
{
int i; if ( ((L->ini == 0) && (L->fim == MAX-1)) || /*não tem espaço*/ (posicao > L->fim - L->ini + 2 ) || /*posição inválida*/(posicao < 1) || /*posição inválida*/((L->ini == -1) && (posicao != 1 )) ) { //lista vazia, só pode ser o primeiro printf("erro - posicao invalida\n"); exit(1); }
else if (L->ini ==-1) { L->ini= 0; L->fim = 0; } else if (L->fim != MAX-1) { for (i=L->fim; i >= L->ini+ posicao -1; i--) L->vetor[i+1] = L->vetor[i]; L->fim = L->fim + 1;
} else { for (i=L->ini; i ini + posicao-1; i++) L[i-1] = L[i]; L->ini = L->ini- 1;
} L->vetor[L->ini+posicao-1]=P;
}
Produto remove ( Produto * L, int posicao)
{
int i; Produto rem; strcpy(rem->nome,""); rem->cod=0; rem->preco=0; if ( (posicao > L->fim - L->ini + 1 ) || (posicao < 1)) return rem; else { rem = L.inicio+posicao-1; for (i=L.inicio+posicao-1; iini+1);posicao++){ printf("%s ",consulta(L,posicao).nome); printf("%f ",consulta(L,posicao).preco); printf("%d ",consulta(L,posicao).cod);