Código em Linguagem C para uma lista duplamente encadeada
#include
#include
typedef struct _produto{ int codigo; char nome[10]; float preco;
}tp_produto;
typedef struct _nodo tp_nodo; struct _nodo{ tp_nodo *ant; tp_produto info; tp_nodo *prox;
};
//Funções tp_nodo* inicializa(){ return(NULL);
}
tp_nodo* destruirLista(tp_nodo *ptl)
{
tp_nodo *aux = NULL; for(aux = ptl; aux != NULL; aux = aux->prox) free(aux); return(NULL);
}
tp_produto* leituraProduto()
{
tp_produto *nvProduto = NULL; nvProduto = (tp_produto*) malloc(sizeof(tp_produto)); printf("\n\n\tInforme os dados do produto:"); printf("\nNome:\t"); scanf("%s", nvProduto->nome); printf("\nCódigo:\t"); scanf("%d", &(nvProduto->codigo)); printf("\nPreço:\t"); scanf("%f", &(nvProduto->preco)); return(nvProduto);
}
//Funções de inserção tp_nodo* insereInicio(tp_nodo *ptl, tp_produto *p)
{
tp_nodo *nvNodo = NULL; nvNodo = (tp_nodo*) malloc(sizeof(tp_nodo)); nvNodo -> info = *p; nvNodo -> ant = NULL; nvNodo -> prox = ptl;
if (ptl != NULL) ptl -> ant = nvNodo; ptl = nvNodo; return (ptl);
}
tp_nodo* insereFinal(tp_nodo *ptl, tp_produto *p)
{
tp_nodo *nvNodo = NULL, *aux = NULL; nvNodo = (tp_nodo*) malloc(sizeof(tp_nodo)); nvNodo -> info = *p; nvNodo -> prox = NULL; if (ptl == NULL) { nvNodo -> ant = NULL; ptl = nvNodo; }else { for(aux = ptl; aux->prox !=