链表

//创建链表
function Node(value){
    this.val = value;
    this.next = null;
}
var a = new Node('a');
var b = new Node('b');
var c = new Node('c');
 a.next = b;
b.next = c;

//遍历节点
function paint(root){
    if(!root){
        return null
    }else{
        console.log(root.val)
        paint(root.next)
    }   
}

//查找节点个数
function findNodeNum(root){
    if(!root) return 0;
    return 1 + findNodeNum(root.next)
}

//索引值查找节点
function findIndexVal(root,index){
   let i = 0;
   let node = root;
  while(i < index){
    if(!node.next) return null
    node = node.next
    i++
  }
  return node.value
}
function findIndexValue(root,index,i=0){
  if(i === index) return root.value
  if(!root.next) return null;
  return findIndexValue(root.next,index,i + 1 )
}
//改变索引下value属性 function setValue(root,index,value){ function _setValue(node,i){ if(!node)return ; if(index === i){ node.val = value }else{ _setValue(node.next,i + 1) } } _setValue(root,0) }
function setValue(root,index,value,i =0){
  if(i === index){
    root.value = value
    return
  }
  if(!root.next) throw new Error(`root第${index} 不存在`)
  return setValue(root.next,index,value,i + 1 )
}
//随机插入节点 function insertNode(node,value){ var newValue = new Node(value); var temp = node.next; newVlaue.next = temp; node.next = newValue } //在节点后添加节点 function insertAfterNode(root,value){ if(!root.next){ var newNode = new Node(value) root.next = newNode }else{ insertAfterNode(node.next,value) } } //删除节点 function removeNode(root,value){ if(root.value === value){
return root.next
  }
root.next = removeNode(root.next,value)
  return root } //节点反转 function resverNode(root){   let pre = null;
  let cur = root;
  while(cur){
    let temp = cur.next
    cur.next = pre
    pre = cur
    cur = temp
  }
  return pre
}
//链表中倒数第k个节点
function
getKthFromEnd(head,k){
  if(!head) return null
  let fast = slow = head;
  let n = 0;
  while(n < k && head){
    fast = fast.next;
    n++
  }
  if(n != k) return null
  while(fast){
    fast = fast.next;
    slow = slow.next
  }
return slow
}



 

 

posted @ 2020-06-16 15:12  心之所指,行之所至  阅读(124)  评论(0)    收藏  举报