Clear[toLinkedList];
toLinkedList[lst_] := Fold[ll[#2, #1] &, ll[], Reverse@lst]
ClearAll[fillGaps];
fillGaps[dates_] :=
Block[{$IterationLimit = Infinity},
fillGaps[ll[], toLinkedList[dates]];toLinkedList[dates]]];
fillGaps[accum_, ll[val : {d_, _}, tail : ll[{dn_, _}, _ll]]] :=
With[{nxt = DatePlus[d, 1]},
fillGaps[
If[nxt === dn, ll[accum, val], accum],
If[nxt === dn, tail, ll[val, ll[{nxt, 0}, tail]]]
]];
fillGaps[accum_, ll[val_, ll[]]] :=
Append[List @@ Flatten[accum, Infinity, ll], val];