Projeto de lista encadeada ordenada para controlar a inserção de produtos
a) apresentar os produtos ordenados por código (obs. o código deve ser informado pelo usuário, de forma aleatória).
b) apresentar os produtos ordenados, de maneira decrescente, pela quantidade em estoque. */
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "windows.h"
typedef struct Temp { int codigo; //variável que receberá a informação int qtdestoque; char nome[50];
Temp *proximo; //ponteiro para o próximo elemento da lista
}TPRODUTO;
// cria o inicio da lista
TPRODUTO *inicio; //ponteiro para o início da lista
// Funcao que define a lista como vazia. void inicializarLista() { inicio = NULL;
}
// Funcao que insere um elemento do inicio da lista. void inserir() {
TPRODUTO *novoProduto, *produtoAnterior, *produtoAtual; novoProduto = (TPRODUTO *) malloc(sizeof(TPRODUTO)); printf("\nInsira o codigo do produto: "); scanf("%i",&novoProduto->codigo); printf("\nInsira o nome do produto: "); fflush(stdin); gets(novoProduto->nome); printf("\nInsira a quantidade de estoque do produto: "); scanf("%i",&novoProduto->qtdestoque); novoProduto -> proximo = NULL;
//insere novo produto na lista if (inicio == NULL) //verifica se a lista está vazia
{
inicio = novoProduto;
}
else { produtoAtual = inicio; if (produtoAtual -> codigo > novoProduto->codigo)
{
novoProduto -> proximo = inicio; inicio = novoProduto;
}
else { while (produtoAtual != NULL) { if (produtoAtual -> codigo < novoProduto->codigo) { produtoAnterior = produtoAtual; produtoAtual = produtoAtual -> proximo;
}
else { produtoAtual = NULL;
}
} novoProduto -> proximo = produtoAnterior -> proximo; produtoAnterior -> proximo = novoProduto;
}
} system("cls"); }
void ordenarPeloCodigo()
{
TPRODUTO *p; if (inicio == NULL)
{
printf("--- fim da lista