A good question.
Assimilation (voice): * tagto > * takto. This is a common phenomenon, cf. scribo-scripsi, veho-vixi etc. (see e.g. Weiss, p. 188, I.1);
With dico, there's nothing unusual: diksi, dikto;
With struo: k was inserted there analogically. Verbs ending in a labiovelar (kw, gw) follow this pattern:
- "the labial element of a labiovelar is deleted before a consonant" (Weiss, p. 188)
coquo- coxi, unguo - unxi
- "Labial and velar stops are devoiced and deaspirated before a voiceless obstruent" (Weiss, p. 188) - in other words, our voice assimilation again:
unguo - unxi
fivo (i.e. figo) - fixi
fluo - fluxi
coniveo - conixi
(Examples taken from Tronskii 1960, pp. 260-261).
Remember that *PIE gw > Lat. u̯ (unless after a nasal).
So, this rule applied - by analogy - to some verbs without a labiovelar, e.g. vivo-vixi or struo-struxi.
cf. Weiss "[a]lterations caused by the differing outcomes of the voiced labiovelars in prevocalic and preconsonantal position would lead to an alternation -u̯-V ~ -kT-" (p. 441).
or Meiser 1998: