Boa noite, pessoal.
Estou com um exercício da faculdade sobre Listas Encadeadas Simples, e queria fazer com que a ordem dos nós fique inversa a que inseri nos nós.
Como posso fazer isso?
É basicamente nessa maneira:
**ANTES**
L ->
(800, 99.99, Polystation 5) ->
(981, 199.99, XCaixa Series Y) ->
(345, 299.99, mouse gamer) ->
(123, 699.99, teclado) ->
NULL
**DEPOIS**
L ->
(123, 699.99, teclado) ->
(345, 299.99, mouse gamer) ->
(981, 199.99, XCaixa Series Y) ->
(800, 99.99, Polystation 5) ->
NULL
A) Função que inverte o nó da lista
// (d) Retorna a Lista invertida. Se a lista está vazia, retorne uma lista vazia.
Lista *inverter(const Lista *L) {
// IMPLEMENTE ESTA FUNÇÃO
Lista* q; /* variável auxiliar para nova lista */
No *p;
int aux;
for (p = L; p != NULL; p = p->prox)
if (p-> == NULL)
{
aux = p->prox;
p->prox = NULL;
return p;
}
}
B) Structs de `_produto`, `_no` e `_lista`
// struct que define um produto
typedef struct _produto {
int num_serie; // numero de série do produto
char nome[64];
double preço;
} Produto;
// struct que define um nó curcular duplamente encadeado
typedef struct _no {
Produto *prod;
struct _no *prox;
} No;
// struct que define uma Lista Ligada Simples
typedef struct _lista {
No *inicio;
No *fim;
int tamanho; // numero de nós da lista
} Lista;
C) Código acionado na `main()`:
else if (strcmp(comando, "inverte") == 0) {
Lista *L_aux = inverter(L);
destroiLista(&L);
L = L_aux;
}