0

可能重复:
在 Javascript 中通过引用传递变量

我拼命地寻找解决方案。我有一个 javascript 项目要完成,唯一阻碍我的是这个小东西。我只需要 c 中的和符号之类的东西放在函数参数旁边,这样它就可以通过引用传递,并且它会在函数之外发生变化。

现在我知道还有其他方法。但就我而言,这是唯一能帮助我的事情。这是一个创建二叉搜索树的程序,我最初是用 c++ 制作的,但我需要将它转换为 javascript,因为我将展示代码执行时树是如何生成的。这是我的项目。因此,要创建二进制结构,只有像&符号这样的东西会对我有所帮助。

function nod()
{
    var info;
    var left;
    var right;
}

var rad;
rad = new nod();
rad = null;

function create(rad,x) // create(nod *&rad, int x) in c++
{
    if(rad==null)
    {
        rad = new nod();
        rad.info = x ;
        rad.left = rad.right = null;
    }
    else
    {
        if(x < rad.info)
        {
            create(rad.left,x);
        }
        else
        { 
            create(rad.right,x);
        }
    }
}

function read(rad) // read(nod *&rad) in c++
{
    var input = [
                    0,
                    10,
                    2,
                    1,
                    8,
                    9,
                    4,
                    5,
                    3,
                    6,
                    20,
                    11,
                    30,
                    21,
                    31,
                    22,
                    23,
                ];
    var i;
    for(i=1;i<=16;i++)
    {
        create(rad,input[i]);
    }
}

read(rad);
4

2 回答 2

0

在 javascript 中,对象是通过引用传递的。因此,请尝试将您的值作为对象传递。提示:尝试像这样传递它 {value:your_value}

于 2012-06-19T12:42:22.023 回答
0

未经测试,但如果你不迫切需要递归,你可以使用这个:

function create(rad, x) // create(nod *&rad, int x) in c++
{
  var result = new nod();
  result.info = x;
  result.left = result.right = null;

  while (true) {
    if (x < rad.info) {
      if (rad.left) {
        rad = rad.left;
        continue;
      }
      rad.left = result;
      break;
    } else
      if (rad.right) {
        rad = rad.right;
        continue;
      }
      rad.right = result;
      break;
    }
  }
}
于 2012-06-19T12:50:18.420 回答