"Assignment from incompatible pointer type" Language C

#include 
#include 

typedef struct {
struct element * next;
char * name;
}element;

element * last = NULL;

void push (element * _element) {
_element-> next = NULL;
if (last == NULL) {
last = _element;
} else {
_element -> next = last;
last = _element;
}
}

element * pop () {
if (last == NULL) {
return NULL;
}
element * return element = last;
last = return element -> next;
return return element;
}

Of course it is not the complete code because the int main is not implemented, but according to the errors they are in:

_element -> next = last;

and in:

last = return element -> next;