warning incompatible pointer, why this happens?
===

    #include <stdio.h>
    typedef int element_type;
    
    typedef struct{
      element_type e;
      struct Cell *next; 
    } Cell,*List;
    
    Cell *End(List L){
      Cell *q = L;
      while (q->next != NULL){
        q = q->next;
      }
      return q;
    }
    
    int main(){
      
      return 1;
    }


List_pointer.c:12:7: warning: assignment from incompatible pointer type [enabled by default]

This is the line where I have `q=q->next`. To me, it seems very much valid, because List is declared to be a pointer to a cell struct, q is also declared as a pointer to a cell struct.

Thanks for your help. I have limited experience in C, and I was implementing some basic data structure to get back on track. Thanks