问题见代码,这是一段大神写的代码。但有两行我没看懂,有知道的童鞋帮忙解答下,先谢谢了!
public Node addList2(Node head1,Node head2)
{
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
while(head1 != null){
stack1.push(head1.data);
head1 = head1.next;
}
while(head2 != null){
stack2.push(head2.data);
head2 = head2.next;
}
int n1=0; //链表1的数值
int n2=0; //链表2的数值
int n=0; //n1+n2+ca
int ca=0; //进位
Node node=null; //当前节点
Node pnode=null; //当前节点的前驱节点
while(!stack1.isEmpty()||!stack2.isEmpty())
{
n1 = stack1.isEmpty() ? 0 : stack1.pop();
n2 = stack2.isEmpty() ? 0 : stack2.pop();
n=n1+n2+ca;
node=new Node(n%10);
node.next=pnode;//根据下一行代码,node节点next域指向它自身,为什么要指向自身
pnode=node;//
ca=n/10;
}
if(ca == 1)
{
pnode = node;
node=new Node(n/10);
node.next=pnode;//问题同上
}
return node;
}
public Node addList2(Node head1,Node head2)
{
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
while(head1 != null){
stack1.push(head1.data);
head1 = head1.next;
}
while(head2 != null){
stack2.push(head2.data);
head2 = head2.next;
}
int n1=0; //链表1的数值
int n2=0; //链表2的数值
int n=0; //n1+n2+ca
int ca=0; //进位
Node node=null; //当前节点
Node pnode=null; //当前节点的前驱节点
while(!stack1.isEmpty()||!stack2.isEmpty())
{
n1 = stack1.isEmpty() ? 0 : stack1.pop();
n2 = stack2.isEmpty() ? 0 : stack2.pop();
n=n1+n2+ca;
node=new Node(n%10);
node.next=pnode;//根据下一行代码,node节点next域指向它自身,为什么要指向自身
pnode=node;//
ca=n/10;
}
if(ca == 1)
{
pnode = node;
node=new Node(n/10);
node.next=pnode;//问题同上
}
return node;
}
解决方案 »
- 请教一个正则表达式
- jframe 在什么环境下运行呢?
- 高手入!用IE控制线程的启动和停止,RESIN服务器,遇到问题了,发了200分
- JTABLE中对某一列的操作
- 请问想在一个窗体出现后过5秒钟,跳转在另一个窗体,怎么做啊,要响应什么时间啊,谢谢了,急,在线等.
- 高分求助在线等:java的application程序可以获得本机的机器名么?
- 加密中的PBE是那些单词的缩写
- 请教!!!在线等
- 我用记事本写了一个小程序是带窗口的,源程序如下,我该怎么运行:是java FrameTest?还是javaw FrameTest?请指教一下!!!
- 为什么我的好多java小程序在Netscape4.01中不能正常运行?
- 关于 File.delete的问题,多个文件删不干净,有点奇怪,求助大佬
- Hessian异常,实在是找不到原因 请求大家帮忙
其次,为啥node要next指向pnode,然后pnode再等于node呢?这实际上就是node倒排,如果一直是node的next为新的node,就相当于个位排在前,十位百位等等一直排在后,显然不符合,所以要倒过来排,让下一个新node的next等于前一个旧node
ca是进位,最后一次进位肯定是在最前,所以不用倒排了