Wstawianie elementu do zbioru(lista)

0

Hej, muszę wstawić element do zbioru, i wyskakuje mi błąd w mainie przy inicjalizacji a i b: "nie można konwertować z node* na node."
I jeszcze przy wywołaniu funkcji nodelista = wstaw(b, 2); "nie można dokonać konwersji argumentu z node do node.
Mógłby ktoś wytłumaczyć czemu tak ?

#include <iostream>
#include <cstdlib>
using namespace std;

struct node {
    int w;
    node * next;
};
node* wstaw(node* zbior, int element) {
    node* r;
    node * prev;
    r = zbior;
    prev = NULL;
    while (r != NULL && r->w < element) {
        prev = r;
        r = r->next;
    }
    //element = 5, lista: 1 2 3 4 6 7 9 prev = 4, r = 6 KONIEC

    //w przypadku gdy element jest już zawarty w zbiorze
    if (r != NULL && r->w == element) {
        return 0; 
    }
    //dodawanie elementu
    node *nowy = new node;
    nowy->w = element;
    nowy->next = r;
    
}

int main() {
    node a = new node;

    a.w = 3;
    node b = new node;
    b.w = 1;
    b.next = &a;
    node*lista = wstaw(b, 2);
    system("pause");
    return 0;
}
1

o_O?
Operator new zwraca wskaźnik a nie obiekt.

node* a = new node;
0
supergosc napisał(a):
    a.w = 3;
    node b = new node;
    b.w = 1;
    b.next = &a;
}

Ok, tylko potem musze zmienić resztę bo mi błędy wyskakują:

    a->w = 3;
    node*b = new node;
    b->w = 1;
    b->next = a;

Teraz powinno być ok?

0

Nie do końca, co zwraca wstaw() jeżeli wszytko jest ok?

0

Sprawdź? o_O Teraz sie pewnie skompiluje. Nie wiem czy reszta kodu ma sens.

1 użytkowników online, w tym zalogowanych: 0, gości: 1