In this work, we have proposed link adaptation based joint spectrum and power allocation algorithms for uplink cellular vehicle-to-everything (C-V2X) communication for OFDMA based 5G systems. In C-V2X, vehicle-to-vehicle (V2V) users share radio resources with vehicle-to-infrastructure (V2I) users. Existing works primarily focus on the optimal pairing of V2V and V2I users under the assumption that each V2I user needs a single resource block (RB); minimizing any interference through power allocation. In contrast, in this work, we have considered that the number of RBs needed by the users is a function of their channel condition and Quality of Service (QoS) - a method called link adaptation. It is effective in compensating for the incessant channel quality fluctuations at the high frequencies of operation of 5G. The first proposed resource allocation scheme of this work greedily allocates RBs to V2I users using link adaptation and then uses Hungarian algorithm to pair V2V with V2I users, while minimizing interference through power allocation. To reduce the complexity, the second scheme groups RBs into resource chunks (RCs); then uses Hungarian algorithm twice - first to allocate RCs to V2I users, and then to pair V2I users with V2V users. Extensive simulations reveal that link adaptation increases the number of satisfied V2I users as well as their sum-rate, while also improving QoS of individual users, thereby making it indispensable for C-V2X system. We have also considered the presence of best-effort users, and the diverse QoS has been provided through the multi-numerology frame structure of 5G.