Algorithm for matching people
This is the problem of finding a matching in a bipartite graph.  Each person is represented as a vertex in the graph, and you draw an edge between two people if they both have included each other on their rankings.  Then any matching corresponds to a way to match people.  There are standard algorithms that can find a maximum matching in a bipartite graph efficiently, so you'll even be able to find a pairing that maximizes the number of stable pairs created.