A name is added to the national transplant waiting list every 9 minutes. On average, 17 people die every day from the lack of available organs for transplant. Our project aims to match organ donors to recipients who need transplants. Donors and Recipients are stored in separate maps. Each value in the map contains the pointer to the head of the linked list of individuals based on different requirements. We will implement a searching algorithm on a graph that includes the locations of donors and recipients and will find the shortest possible path. Each patient has blood type, Required Blood Type, Location, etc. Donors also have the same qualities. The user can add and remove a donor or recipient, view and count the donors and patients waiting for a match. This program will find the best possible organ and blood type match under given constraints. If a match is found on adding a patient or a donor, that donor-recipient pair will be added to a queue. In the case of multiple partners, the program will provide the closest possible location of the donor to increase the chance of survival.