Non so se ho capito bene il problema...e' qualcosa del genere ?
codice:
  struct L2; // forward declaration

  struct L1
  {
     int chiave;
     struct L2 *l2;
     struct L1 *next;
  };

  struct L2
  {
     struct L1 *l1;
     struct L2 *next;
  };
in C++ dovrebbe funzionare...non so in C.