I can tell you that map generation is a nice big challenge. I don't have any examples onhand, but if you take a look at what Nethack and ADOM and Angband, etc, maps tend to look like...well, they start with rooms, then they define the exits from those rooms, and then they start linking up exits.
If you want to link the west exit of the west-most room, with the east exit of the east-most room, your pathfinding algorithm needs to know how to avoid going through the walls of existing rooms to get where it's going. So do that.
- Make a bunch of rectangular rooms that don't overlap and aren't too close to each other
- While all rooms are not accessible from other:
-- Pick two rooms that aren't in the same graph
-- Randomly pick a spot along the wall from both rooms, which is not already in use, is not adjacent to an existing door, etc
-- Pathfind from one of those to the other, turning solid stone into corridor as you go
-- Put doors in the walls, or don't, or make secret ones
- Add a couple more connections just for fun
- Add up-stairs and down-stairs in rooms, etc...
Now, it's totally okay if corridors intersect. They can ignore each other completely, that's fine! You'll end up with occasional 2-wide corridors, but it works for Nethack. If you want a slightly more complex algorithm, then you can add nodes to the corridors you make--that way, you can pathfind from a room to an existing corridor node, and you wind up with Ts and stuff in corridors.
You can also start making non-square rooms, as long as your program knows how to pathfind around them, and knows how to tell which wall segments are acceptable to put doors in!