你的要求是链表吗?不像啊。数据*2表示什么?是值自乘2倍还是意味着你的每个节点的值都是唯一的,并有额外一个重复次数的属性?

解决方案 »

  1.   

    <script language=javascript>
    //--模拟一下,xg_ChainNode为接点对象,xg_ChangeChain为链表对象
    //*********************************************************************************************************
      function xg_ChainNode(ANodeID,ANodeValue){
        this.nodeID=ANodeID;
        this.nodeValue=ANodeValue;
      }
    //*********************************************************************************************************
      function xg_ChangeChain(){
        this.xg_Chain=new Array();
    this.xg_ArrayCount=0;
    this.xg_InsertNode=xg_InsertNode;
    this.xg_SearchChain=xg_SearchChain;
    this.xg_DeleteNode=xg_DeleteNode;
    this.xg_ChangeNode=xg_ChangeNode;
      }
    //*********************************************************************************************************
      function xg_SearchChain(ANodeID){
        with(this){
          for (var i=0;i<xg_Chain.length;i++){
        if (xg_Chain[i].nodeID==ANodeID){
      return xg_Chain[i];
    }
      }
      return "";
    }
      }
    //*********************************************************************************************************
      function xg_InsertNode(AXGNode){
        var tmpNode;
        with(this){
      if ((tmpNode=xg_SearchChain(AXGNode.nodeID))!=""){
        tmpNode.nodeValue=2*tmpNode.nodeValue;
      } else{
        xg_Chain[xg_ArrayCount]=AXGNode;
        xg_ArrayCount++;
      }
    }
      }
    //*********************************************************************************************************  
      function xg_DeleteNode(ANodeID){
        var tmpNode;
    with(this){
      for (var i=0;i<xg_Chain.length;i++){
        if (xg_Chain[i].nodeID==ANodeID){
      for (var j=i+1;j<xg_Chain.length;j++){
        xg_Chain[j-1]=xg_Chain[j];
      }
      xg_Chain.pop();
      return 0;
    }
      }
      return -1;
    }
      }
    //*********************************************************************************************************
      function xg_ChangeNode(ANodeID){
        with (this){
      var tmpNode=xg_SearchChain(ANodeID);
      if (tmpNode!=""){
        tmpNode.nodeValue=4*tmpNode.nodeValue;
    return 0;
      }
      return -1;
    }
      }
    //*********************************************************************************************************
      function showChain(){
        with(xgChangeChain){
          document.write("<table align=center border=1>");
          for (var i=0;i<xg_Chain.length;i++){
            document.write("<tr><td>"+xg_Chain[i].nodeID+"</td><td>"+xg_Chain[i].nodeValue+"</td></tr>");
          }
          document.write("</table>");
        }
      }
    //*********************************************************************************************************
    </script><script language=javascript >
      var xgChangeChain=new xg_ChangeChain();
      //-- 生成初始链表
      for (var i=0;i<6;i++){
        var xgChainNode=new xg_ChainNode(i,i);
        xgChangeChain.xg_InsertNode(xgChainNode);
      } 
      //-- 插入一个已有的对象
      xgChangeChain.xg_InsertNode(xgChangeChain.xg_Chain[1]);
      //-- 删除一个对象
      xgChangeChain.xg_DeleteNode(2);
      //-- 修改一个节点
      xgChangeChain.xg_ChangeNode(3);
      //-- 显示链表
      showChain();
    </script>