Add field to user meta table in database when link is clicked

Personally, I would store the post IDs (as opposed to URLs). Something like:

function wpse_143643_add_user_bookmark() {
    if ( ! empty( $_GET['bookmark'] ) && is_singular() && is_user_logged_in() ) {
        if ( ! $bookmarks = get_user_meta( $user_id = get_current_user_id(), 'bookmarks', true ) )
            $bookmarks = array();

        $bookmarks[] = get_queried_object_id();
        $bookmarks = array_unique( $bookmarks );

        update_user_meta( $user_id, 'bookmarks', $bookmarks );
    }
}

add_action( 'template_redirect', 'wpse_143643_add_user_bookmark' );

So a link like http://example.com/my-post/?bookmark=true will add my-post to the current user’s bookmarks.

And to display the list of bookmarks:

if ( $bookmarks = get_user_meta( $user_id = get_current_user_id(), 'bookmarks', true ) ) {
    $posts = get_posts(
        array(
            'post__in' => $bookmarks,
        )   
    );

    $list="<ul class="bookmarks">";
    foreach ( $posts as $_post )
        $list .= '<li><a href="' . get_permalink( $_post->ID ) . '">' . get_the_title( $_post->ID ) . '</a></li>';
    $list .= '</ul>';

    echo $list;
}