Most of real networks have been shown to possess community structure. Communities are middle structures of etworks. They are defined as groups of densely connected nodes which are sparsely connected to the rest of the network. Several algorithms have been proposed to reveal underlying community structure in complex networks. We propose a general spectral method to find communities of a network based on network complement and anti-community concepts. Analytical and numerical results show that the eigenvectors of matrices corresponding to a network complement reveals the community structure of a network more accurately than the eigenvectors of matrices corresponding to the network itself. It is shown that the Laplacian eigenvectors are the best candidate for spectral community detection especially in networks with a heterogeneous community structure. The method is applied to some computer-generated and real-world networks with known community structures. Moreover, a novel spectral approach for discovering community structure of undirected networks is introduced, using complex eigenvalues and eigenvectors of the Laplacian matrix of a directed network corresponding to the original undirected one. The effectiveness of the method depends on the type of directioning of the network. The role of directioning is discussed and it is shown that the best results are obtained for a balanced directioning in which the difference between in and out degrees of each node is at most 1. Another algorithm has been also introduced to uncover overlapping community structure of complex networks, based on the NMF method. As for the feature matrix of MNF method, we introduce a vertex-vertex correlation matrix. The methods are tested by applying them to some computer generated and real world networks. Keywords: Complex Networks, Analysis of algorithms, Random graphs, Community structure, Genomic and Proteomic networks