Keď si nevieš nájsť chybu, rozdeľ si kód do viacerých jednoduchých častí.
Napr pridanie na N-té miesto by si mohla napísať ako
Kód:
ZAMESTNANEC * novy = act; // to je ten, co prejde cez scanf
ZAMESTNANEC * pridajPo = najdiNtyPrvok( zoznam, N ); // vrati prvok, ktory je na N-tej pozicii. Ak tam taka nie je, vrati posledny
pridajPrvokZa( pridajPo, novy ); // prida novy prvok za prvok pridajPo
A tieto jednoduché časti ti to zaobstarajú. Pritom sú jednoduché a nemáš problém ich implementovať.
Napr tu
http://en.wikipedia.org/wiki/Linked_lis ... inked_list máš tú funkciu pridajPrvokZa(), aha
Kód:
function insertAfter(Node node, Node newNode) // insert newNode after node
newNode.next := node.next
node.next := newNode
Stačí ti len nájsť prvok na Ntej pozícií. Zbežne som tvoj kód preletel a vidím tam, že robíš pocet++ a potom ešte aj ++pocet (v podmienke) Tak zmeníš premennú pocet dva krát v jednom cykle, to by mohol byť problém.
A ešte reťazce nenačítaj cez scanf, to nie je úplne dobrá voľba na toto (a ešte to aj robíš zle). Použi miesto toho funkciu gets
http://www.cplusplus.com/reference/cstdio/gets/