チェーンテーブルの反転-全(反復法+再帰法)をシングルチェーンで実現します.


シングルチェーンでチェーンの反転を実現しました.全(反復法+再帰法)で一週間を研究しました.笑って泣いて、私は愚かすぎます.以下は全部コードです.
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>         </title>
  </head>
  <body>

  </body>
  <script type="text/javascript">
  var arr = [];
       for(var i=0; i<100000; i++){
           arr.push(Math.random());
       }
       console.time("sort");
       arr.sort();
    //   
    var Node = function (e){
      this.elem = e;
      this.next = null;
    }
    //linkedlist   
    var LinkedList = function(){
      this.head = new Node();
    }
    LinkedList.prototype.toAppend = function(e){
      var node = new Node(e);
      var n = this.head;

      while(n.next !=null){
        n = n.next;
      }
      n.next = node;

    }


     LinkedList.prototype.toReserve2=function(){
       if (this.head == null){
      return this.head;}
      else{
        // debugger;
        var _n =this.head;
        var _n1 =_n.next;
        while (_n1 != null) {
          _n.next = _n1.next;
          _n1.next = this.head;
          this.head = _n1;
          _n1 = _n.next;
        }

        console.log(this.head) ;
      }

     }
    var lin = new LinkedList();
    lin.toAppend(11);lin.toAppend(22);lin.toAppend(33);lin.toAppend(44);lin.toAppend(65);
    //         
    var re = function(head){
      // debugger;
            var n = head;
            var n1= n.next;
            if(n==null||n1==null){return head};
            var p = re(n1);
            n.next = n1.next;
            n1.next = n;
            n = n1;
            n1 = n.next;
            return p;


    }
    //            
    LinkedList.prototype.toReserve1=function(){
        return re(this.head)
                  }
    //  ---
    // console.log(re(lin.head));
    //      
    // console.log(lin.toReserve1())
    // lin.toReserve2();
    console.timeEnd("sort");

  </script>
</html>
*[HTML]:再帰時間:sort:454.9999755859375 msは基本的に450ぐらいの反復時間:sort:423 msは基本的に420ぐらいです.なぜ再帰が繰り返されるのか分かりません.はははは