How to display comments list by order when clicking on newest or oldest link?

Just open the comments.php file from your theme. Find the following line (or similar)

<?php foreach ($comments as $comment) : ?>

Add this lines just above it

if (isset($_GET['comOrder']) && $_GET['comOrder'] == 'Newest' )
    $comments = array_reverse($comments, true);

so your code looks like this:

<?php if (isset($_GET['comOrder']) && $_GET['comOrder'] == 'Newest' )
        $comments = array_reverse($comments, true);
foreach ($comments as $comment) : ?>

and then make sure your newest first like points to your current location with ?comOrder=Newest

UPDATE:

In case you are using wp_list_comments then simply add reverse_top_level parameter set to true when newest first link is clicked so something like this should work:

$args = array('type' =>'comments','callback' => 'mytheme_comment');
if (isset($_GET['comOrder']) && $_GET['comOrder'] == 'Newest' )
    $args['reverse_top_level'] = true;
wp_list_comments($args);