I assume that your problem is that the items you create in the lists are referring each other. For example, you create ItemA in ListA and ItemB in ListB. ItemA references ItemB and ItemB references ItemA. I assume further, that you would like to create the items from code and the lookup fields are mandatory.
In this case you can simply create ItemB first (without the reference yet), the knowing the ID of ItemA you can create ItemB (setting the reference on ItemA), finally update the (null) reference on the item ItemA to ItemB.
So something like that should do the job:
using(SPSite site = new SPSite("http://YouSharePoint")) using (SPWeb web = site.OpenWeb()) { SPList listA = web.Lists["ListA"]; SPList listB = web.Lists["ListB"]; SPListItem itemA = listA.AddItem(); itemA.Title = "TitleA"; itemA.Update(); SPListItem itemB = listB.AddItem(); itemB.Title = "TitleB"; itemB["LookUpFieldForListA"] = new SPFieldLookupValue(itemA.ID, itemA.Title); itemB.Update(); itemA["LookUpFieldForListB"] = new SPFieldLookupValue(itemB.ID, itemB.Title); itemA.Update(); }