Efficient allocation of the scarce resource spectrum is a fundamental problem in mobile communications. Cooperative Relaying (CoR) and Network Coding (NC) are two promising techniques for improving the performance of next-generation wireless networks. In this thesis, cross-layer resource allocation is studied for relay-assisted bidirectional multichannel wireless networks. We model the network in which two nodes, User Equipment (UE) and eNodeB (eNB), exchange information with the assistance of a Relay Station (RS). The UEs and eNB can choose between different transmission schemes: direct transmission, pure CoR, or via the combination of NC and CoR (NC/CoR). Novel optimization frameworks are proposed for the resource allocation problem for such networks. First, the achievable rate regions are characterized, and the joint optimization problem of power allocation and transmission scheme selection for maximizing the bidirectional stability region is defined. A hybrid transmission scheme with adaptive resource allocation is proposed to dynamically select the best transmission strategy and the optimal resource allocation at each bidirectional transmission frame. The simulation results show that the hybrid scheme with joint power control and channel allocation improves the system performance considerably. Second, the joint resource allocation and relay selection problem is studied for bidirectional Orthogonal Frequency Division Multiple Access (OFDMA) relay networks. The problem of joint channel allocation/pairing, relay selection, and transmission scheme selection is formulated as a combinatorial optimization problem. First, we adopt a graph-based approach by establishing an equivalent Maximum Weighted Clique Problem (MWCP). In addition, the joint problem is mapped into a three-dimensional assignment problem in which a metaheuristic algorithm based on Ant Colony Optimization (ACO) is employed to find the solution in polynomial time. The results confirm that while the proposed solutions provide similar results, the ACO algorithm is faster and more reliable due to its lower complexity.