if you are doing EUROPEAN cruises you must differ between your citizenship and the countries you are calling!
In Europe there are the so-called Schengen-countries:
all Scandinavian countries
When you are travelling to one of those country from abroard your passport will be stamped at the first entry point (because 90 days of stay without visa starts to count) and you will never get a stamp when you are travelling between these countries because there is no immigration anymore.
So if your cruise is going Western Med Sea:
Italy - France - Spain
and no ports in North Africa: no stamp!!!
So if your cruise is going Eastern Med Sea incl. Non-European countries like Turkey, Egypt, Lybia you will get:
port of boarding (with us Genoa)
last Schengen-port before you are leaving Schengen countries (with us Rhodes)
first entering Schengen-port (with us Civitavecchia)
Rhine-River-Cruises will be only stamped if you are calling Basle!!! But only the Germans will do and the Swiss. Between Netherland and Germany there is no immigration.