title: program doesn't return 0. It works but returns a very big negative number
body: <p>This code inserts nodes at a beginning of a list. I compiled it and it works perfectly the only problem is that the process does not return 0 but a very big negative number. How can i solve this problem?</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  
  typedef int data;
  
  struct nodo
  {
      data el;
      struct nodo *next;
  };
  
  typedef struct nodo *lista;
  
  
  void inserisci_in_testa (lista *l, data el);
  
  void print (lista temp1);
  
  
  
  int main ()
  {
      lista l;
      lista *s;
      s=&amp;l;
      inserisci_in_testa(s,10);
      inserisci_in_testa(s,1);
      inserisci_in_testa(s,7);
      print(l);
      return 0;
  
  
  }
  
  void inserisci_in_testa (lista *l, data el)
  {
      lista p = malloc(sizeof(struct nodo));
      p-&gt;el = el;
      p-&gt;next = *l;
      *l = p;
  }
  
  void print (lista temp1)
  {
      while (temp1!= NULL)
      {
          printf("%d ", temp1-&gt;el);
          temp1 = temp1-&gt;next;
      }
  }
  </code></pre>