我用js数组来实现一个静态链表,object里包含两个数组,value[],primer[],value里面存放节点的值,primer里面存放节点指向的下一个节点的数组下标,在写搜索方法时,返回值一直为undefined,可是我拆开在控制台测试,觉得我逻辑没问题,js代码:
array.datalist.search=function(object,a){
var value=object.value;
var primer=object.primer;
var result=[];
if(a==0){
result[0]=value[0];
return result[0];
}
else{
for(var i=0;i<a;i++){
result[i+1]=value[primer[i]];
}
return result[i+1];
}
}
html调用代码
<script type="text/javascript">//
var obj={
value: [2,3,4,8,3,7],
primer: [1,2,3,4,5]
}
alert(array.datalist(obj,1));
</script>
巴扎黑2017-04-10 15:08:59
应该是要用递归来解决吧:
// tar 是要找的数,i 是从value的第几个下标开始找
var find = function(obj,tar,i){
if(obj.value[i] == tar){
console.log('index :'+i);
}else if(obj.primer.length){
i = obj.primer.shift();
find(obj,tar,i)
}else{
return -1;
}
}
find(obj,8,0);