Dev - C++ - Errores de compilación en lista enlazadas.

 
Vista:
Imágen de perfil de emi

Errores de compilación en lista enlazadas.

Publicado por emi (1 intervención) el 23/08/2022 02:58:53
Creé un programa en el que el usuario ingresa números enteros y luego estos se insertan al final de una lista enlazada, acto seguido el programa imprime cuál es el último valor que se encuentra en la lista. El código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
 
struct nodo {
    int elem;
    nodo *sig;
};
 
typedef nodo *lista;
 
lista generarLista(lista *p, int value);
int last(lista p);
 
int main() {
    lista *l = NULL;
    int largo, x, cont = 0;
 
    printf("Cantidad de elementos de la lista: ");
    scanf("%d",&largo);
 
    do {
        printf("Inserte el elemento %d de la lista: ",cont);
        scanf("%d",&x);
        cont++;
        l = generarLista(&l, x);
    } while (cont <= largo);
 
    printf("El último elemento de la lista es: %d",last(l));
 
    return 0;
}
 
lista generarLista(lista *p, int value) {
    lista *q, *aux = p;
    q = new nodo;
    q->elem = value;
    q->sig = NULL;
 
    if (aux == NULL) {
        p = q;
    } else {
        while (aux->sig != NULL) {
            aux = aux->sig;
        }
        aux->sig = q;
    }
    return aux;
}
 
int last(lista p) {
    int aux;
    while (p->sig != NULL) {
        aux = p->elem;
        p->sig = p;
    }
    return aux;
}

Al compilar me aparecen los siguientes errores:

1
2
3
4
5
6
7
8
9
main.cpp:25:26: error: cannot convert ‘nodo***’ to ‘nodo**
main.cpp:28:58: error: cannot convert ‘nodo**’ to ‘lista’ {aka ‘nodo*}
main.cpp:35:9: error: cannot convert ‘nodo*’ to ‘nodo**’ in assignment
main.cpp:36:10: error: request for member ‘elem’ in ‘* q’, which is of pointer type ‘lista’ {aka ‘nodo*} (maybe you meant to use ‘->?)
main.cpp:37:8: error: request for member ‘sig’ in ‘* q’, which is of pointer type ‘lista’ {aka ‘nodo*} (maybe you meant to use ‘->?)
main.cpp:42:21: error: request for member ‘sig’ in ‘* aux’, which is of pointer type ‘lista’ {aka ‘nodo*} (maybe you meant to use ‘->?)
main.cpp:43:24: error: request for member ‘sig’ in ‘* aux’, which is of pointer type ‘lista’ {aka ‘nodo*} (maybe you meant to use ‘->?)
main.cpp:45:14: error: request for member ‘sig’ in ‘* aux’, which is of pointer type ‘lista’ {aka ‘nodo*} (maybe you meant to use ‘->?)
main.cpp:47:12: error: cannot convert ‘nodo**’ to ‘lista’ {aka ‘nodo*} in return

Estuve un buen rato dándole vueltas pero no estaría sabiendo cómo solucionarlos, si me pueden dar una mano se agradece infinitamente. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder