This is a code I've written for Random Directed Acyclic Graph Generation:

However this gives two LNK2019 error codes. I'm new to coding, so can anyone help me out? I'd like to learn what I'm doing wrong.Code:#include <stdio.h> #include <stdlib.h> #include <iostream> #include <time.h> using namespace std; int random_or_user_defined( void ); int random_weight_generation( int, int ); int randvert ( void ); int fixedvert ( void ); int random_edge_generation( int ); int connflagcheck( int, int, int ); int vnum, **edge, *connflag, **weight; int main( void ) { random_or_user_defined(); srand (time(NULL)); random_edge_generation( vnum ); random_weight_generation( vnum, **edge ); return 0; } int random_or_user_defined( void ) { char opt; cout<<"Do you want to manually enter the number of vertices?"; cout<<endl<<"Press Y for yes, N for no."<<endl; cin>>opt; while (( opt != 'Y' ) && ( opt != 'y' ) && ( opt != 'N' ) && ( opt != 'n' )) { cout<<"Wrong input! Try again: "; cin>>opt; } if (( opt == 'Y' ) || ( opt == 'y')) { randvert( ); } else if (( opt == 'N' ) || ( opt == 'n' )) { fixedvert( ); } return vnum; } int randvert ( void ) { int vnum_max; cout<<"Enter the number of maximum vertices: "; cin>>vnum_max; while (vnum_max < 2) { cout<<"A graph with one vertex is inadmissible."<<endl<<"Enter a number greater than 1. "; cin>>vnum_max; } srand (time(NULL)); vnum = (rand()%vnum_max) + 1; cout<<"Number of vertices chosen: "<<vnum; return vnum; } int fixedvert ( void ) { cout<<"Enter the number of vertices: "; cin>>vnum; return vnum; } int random_edge_generation( int vnum ) { int i, j, k, **edge; edge = (int **) malloc ( vnum * sizeof (int* ) ); for(i = 0; i < vnum; i++) { edge[i] = (int *) malloc ( vnum * sizeof (int) ); } connflag = (int *) malloc ( vnum * sizeof (int) ); for ( i = 0; i < vnum; i++ ) { connflag[i] = 0; for ( j = 0; j < vnum; j++ ) edge[i][j] = 0; } for ( i = 0; i < vnum; i++ ) { for ( j = vnum - 1; j > i; j-- ) { if (rand()%2 == 1) { edge[i][j] = 1; connflag[j] = 1; } } } connflagcheck( *connflag, **edge, vnum ); return 0; } int connflagcheck( int *connflag, int **edge, int vnum ) { int i; char opt; cout<<"Will you allow disconnected graph? Press Y or N: "; cin>>opt; while (( opt != 'Y')&&( opt != 'y' )&&( opt != 'N' )&&( opt != 'n' )) { cout<<"Wrong input! Try again: "; cin>>opt; } if (( opt == 'N' ) || ( opt == 'n' )) { for ( i = 1; i < vnum; i++ ) { if ( connflag[i] == 0 ) { edge[rand()%i][i] = 1; } } } return **edge; } int random_weight_generation( int vnum, int **edge ) { int i, j, wmax; cout<<"Enter the maximum weight: "; cin>>wmax; weight = (int **) malloc ( vnum * sizeof (int *) ); for(i = 0; i < vnum; i++) { weight[i] = (int *) malloc ( vnum * sizeof (int) ); } for ( i = 0; i < vnum; i++ ) { for ( j = vnum - 1; j > i; j-- ) { if ( edge[i][j] == 1 ) { weight[i][j] = (rand() % wmax) + 1; } } } return **weight; }