#include <stdio.h>
#include <string.h>
typedef struct TRoom
{
char desc[ 256 ] ;
struct TRoom * north;
struct TRoom * south;
} Room;
int main( )
{
Room northRoom, southRoom;
Room * currentRoom;
int c;
strcpy ( northRoom.
desc , "This is the north room" ) ; northRoom.north = NULL;
northRoom.south = & southRoom;
strcpy ( southRoom.
desc , "This is the south room" ) ; southRoom.north = & northRoom;
southRoom.south = NULL;
currentRoom = & northRoom;
printf ( "n: north, s: south, q: quit\n " ) ;
do
{
Room * nextRoom = currentRoom;
printf ( "%s\n " , currentRoom
-> desc
) ;
switch ( c)
{
case 'n' :
nextRoom = currentRoom-> north;
break ;
case 's' :
nextRoom = currentRoom-> south;
break ;
}
if ( nextRoom == NULL)
{
}
else
{
currentRoom = nextRoom;
}
} while ( c != 'q' ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnR5cGVkZWYgc3RydWN0IFRSb29tCnsKICAgIGNoYXIgZGVzY1syNTZdOwogICAgc3RydWN0IFRSb29tICpub3J0aDsKICAgIHN0cnVjdCBUUm9vbSAqc291dGg7Cn0gUm9vbTsKCmludCBtYWluKCkKewogICAgUm9vbSBub3J0aFJvb20sIHNvdXRoUm9vbTsKICAgIFJvb20gKmN1cnJlbnRSb29tOwogICAgaW50IGM7CgogICAgc3RyY3B5KG5vcnRoUm9vbS5kZXNjLCAiVGhpcyBpcyB0aGUgbm9ydGggcm9vbSIpOwogICAgbm9ydGhSb29tLm5vcnRoID0gTlVMTDsKICAgIG5vcnRoUm9vbS5zb3V0aCA9ICZzb3V0aFJvb207CiAgICBzdHJjcHkoc291dGhSb29tLmRlc2MsICJUaGlzIGlzIHRoZSBzb3V0aCByb29tIik7CiAgICBzb3V0aFJvb20ubm9ydGggPSAmbm9ydGhSb29tOwogICAgc291dGhSb29tLnNvdXRoID0gTlVMTDsKICAgIAogICAgY3VycmVudFJvb20gPSAmbm9ydGhSb29tOwoKICAgIHByaW50Zigibjogbm9ydGgsIHM6IHNvdXRoLCBxOiBxdWl0XG4iKTsKCiAgICBkbwogICAgewogICAgICAgIFJvb20gKm5leHRSb29tID0gY3VycmVudFJvb207CiAgICAgICAgcHJpbnRmKCIlc1xuIiwgY3VycmVudFJvb20tPmRlc2MpOwoKICAgICAgICBjID0gZ2V0Y2hhcigpOwogICAgICAgIHN3aXRjaCAoYykKICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgICAgbmV4dFJvb20gPSBjdXJyZW50Um9vbS0+bm9ydGg7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICBuZXh0Um9vbSA9IGN1cnJlbnRSb29tLT5zb3V0aDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgaWYgKG5leHRSb29tID09IE5VTEwpCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIkNhbid0IGdvIHRoZXJlXG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgY3VycmVudFJvb20gPSBuZXh0Um9vbTsKICAgICAgICB9CiAgICB9IHdoaWxlIChjICE9ICdxJyk7CiAgICAKICAgIHJldHVybiAwOwp9