概要
アプリを作っているときに次の画面への値渡しは遷移先のViewControllerのインスタンスを取得したり、prepare(for segue: UIStoryboardSegue, sender: Any?)を用いることで行えます。
今回はその逆で、遷移した先の画面から 遷移元の画面へ値を渡す 方法についてです。
NavigationControllerなし
画面の遷移にNavigationControllerが関係していない状態での値の受け渡し方法です。多くの場合はこの方法を用いると思います。
 let preVC = self.presentingViewController as! PreviousViewController
 preVC.variable = self.variable  //ここで値渡し
UIViewControllerのプロパティであるpresentingViewControllerには遷移元のViewControllerのインスタンスが格納されているので、それを取得してやれば値を受け渡せます。
NavigationControllerあり
上記のようにpresentingViewControllerを取得するところまでは同じ流れですが、プロパティにNavigationControllerが格納されるので以降の処理が少し変わります。
Showではない遷移をしてきたとき
let preNC = self.presentingViewController as! UINavigationController
// let preNC = self.navigationController as! UINavigationController でも可能かと思います
let preVC = preNC.viewControllers[preNC.viewControllers.count - 1] as! PreviousViewController
preVC.variable = self.variable  //ここで値渡し
Showで遷移してきたとき
let preNC = self.presentingViewController as! UINavigationController
// let preNC = self.navigationController as! UINavigationController
let preVC = preNC.viewControllers[preNC.viewControllers.count - 2] as! PreviousViewController
preVC.variable = self.variable  //ここで値渡し
補足説明のようなもの
UINavigationControllerのプロパティであるviewControllersは、公式ドキュメントを参照すると
The root view controller is at index 0 in the array, the back view controller is at index n-2, and the top controller is at index n-1, where n is the number of items in the array.
のように記述されています。つまりviewControllersの0番目にはroot view controller、n-1番目には表示されているViewController、n-2番目には一つ前のViewControllerが格納されているようです。