チェーンテーブルの反転-全(反復法+再帰法)をシングルチェーンで実現します.
14341 ワード
シングルチェーンでチェーンの反転を実現しました.全(反復法+再帰法)で一週間を研究しました.笑って泣いて、私は愚かすぎます.以下は全部コードです.
<!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ぐらいです.なぜ再帰が繰り返されるのか分かりません.はははは