popular post weekly and monthly

These $args is what you need and you may also use that in query_posts();

$args = array(
        'post_type'         => array( 'post' ),
        'post_status'       => 'publish',
        'posts_per_page'    => 9,
        'cat'               => $link1, // try better variable name

        'meta_key' => 'post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',          

        'date_query' => array(
        array(
          'after' => '1 months ago',
        ),
        )   
);

$r = null;
$r = new WP_Query($args);
// do something with $r = result
wp_reset_postdata();

I provided you some other way than query_posts().
BTW, I like you used wp_reset_query(); at the end.