A professora pediu para fazer um trabalho para administrar estoque de uma loja utilizando C.
Tenho uma lista encadeada com os produtos, que estão ordenados por código (faço a ordenação no momento da inclusão).
No entanto, também preciso mostrar a lista por ordem de preço.
Pensei em utilizar um algoritmo de ordenação para ordenar a lista… mas vi que não teria sentido em uma lista encadeada…
Então, criei uma nova lista encadeada e faço a ordenação por preço no momento da inclusão.
Porém, me surgiram algumas dúvidas ao copiar as informações para essa nova lista.
-
Quando vou copiar o produto para a nova lista eu aloco espaço na memória para criar uma estrutura diferente da lista original. Tem como eu copiar todas as informações da estrutura original, no entanto, com um espaço diferente na memória? (Porque não quero alterar a ordenação da lista inicial).
-
Como não consegui copiar a estrutura inteira, copiei uma por uma das propriedades para criar uma estrutura nova. Porém, ao copiar o nome e fabricante que são do tipo char. Aparece a Warning LValue Required. Como posso contornar esse aviso?
typedef struct produto {
//variaveis para armazenar informacoes do produto
char nome[50];
int codigo;
char fabricante[50];
Data dataDeAquisicao;
int quantidadeNoEstoque;
double precoDeVenda;
//variavel para encadear a lista
struct produto *proximo;
} Produto;
/**
* Funcao utilizada para listar todos os produtos em ordem crescente
* de preco
*/
//InformacoesDoEstoque é o header da lista encadeada, tem o inicio da lista e o total de produtos
void listarTodosOsProdutos(InformacoesDoEstoque *informacoesDoEstoque)
{
Produto *iterador, *novoProduto, *produtoAnterior;
//armazenar a lista dos produtos em ordem crescente de preco
Produto *produtosEmOrdemCrescenteDePreco = NULL;
//criar uma lista dos precos em ordem crescente
iterador = informacoesDoEstoque -> inicio;
while( iterador != NULL )
{
//copiar informacoes do produto que esta no estoque
//assim nao altero na memoria os produtos da lista original
novoProduto = (Produto*) malloc(sizeof(Produto));
novoProduto -> codigo = iterador -> codigo;
novoProduto -> dataDeAquisicao = iterador -> dataDeAquisicao;
novoProduto -> quantidadeNoEstoque = iterador -> quantidadeNoEstoque;
novoProduto -> precoDeVenda = iterador -> precoDeVenda;
novoProduto -> fabricante = iterador -> fabricante;
//.... continua a função...
}