单元格和指针变量

时间:2015-05-04 10:32:01

标签: java pointers

class Cell<T> {
    T first;
    Cell<T> next;
    Cell(T f,Cell<T> n) {
       first=f;
       next=n;
    }
}

假设我们有三个变量ls1,ls2和ptr类型Cell<Character>,下面的单元格和指针图给出了初始情况: enter image description here

绘制单元格和指针图表,它们代表以下行之后的情况 代码已经执行:

ls2.next.first='z';
ls1.next=ls1.next.next;
for(ptr=ls2; ptr!=null; ptr=ptr.next)
ls1 = new Cell(ptr.first,ls1);

尝试: 在第一行b变为z之后。 在第二行y变为z之后。 但我不确定这是正确的还是接下来发生的事情。

2 个答案:

答案 0 :(得分:1)

你对第一部分是正确的。第ls2.next.first='z';行会将您的列表更改为:

ls1 --> x --> y --> z --> c
ls2 --> a ---------^

您基本上更改了单元格的

然后,第二行ls1.next=ls1.next.next;将丢弃第一个列表的y元素:

ls1 --> x --> z --> c
ls2 --> a ---^

然后你有一个for循环。在这个循环中,你将遍历ls2的所有元素,并在ls1的头部创建 new 元素,如下所示:

ls1 --> a --> x --> z --> c
ls2 --> a ---------^

ls1 --> z --> a --> x --> z --> c
ls2 --> a ---------------^

ls1 --> c --> z --> a --> x --> z --> c
ls2 --> a ---------------------^

请注意,在创建这些新单元格时,会将它们的值(由于某种原因在名为first的代码中)传递给构造函数,从而创建未连接的全新对象。

答案 1 :(得分:0)

ls1 = czaxzc ls2 = azc 下面是Java代码。

# Begin Whenever generated tasks for: production_app
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * /bin/bash -l -c 'cd /home/deployer/apps/production_app/releases/20150504102922 && bin/rails runner -e production '\''Vehicle.check_not_responding'\'' >> /home/deployer/apps/production_app/releases/20150504102922/log/cron.log 2>&1'

* * * * * /bin/bash -l -c 'cd /home/deployer/apps/production_app/releases/20150504102922 && bin/rails runner -e production '\''SmsDetail.send_sms'\'' >> /home/deployer/apps/production_app/releases/20150504102922/log/cron.log 2>&1'

# End Whenever generated tasks for: production_app