将一个数组中的所有数添加到一个单向链表中
刷LeetCode第二题的时候出的问题:
public static ListNode addTwoNumber(ListNode node1, ListNode node2){
Stack<Integer> stack = new Stack<>();
while (node1 != null){
stack.push(node1.val);
node1 = node1.next;
}
StringBuffer sb = new StringBuffer();
while (!stack.isEmpty()){
sb.append(stack.pop());
}
int num1 = 0;
if(sb.length() <= 9){
num1 = Integer.parseInt(sb.toString().trim());
}
sb.delete(0,sb.length());
while (node2 != null){
stack.push(node2.val);
node2 = node2.next;
}
while (!stack.isEmpty()){
sb.append(stack.pop());
}
int num2 = 0;
if(sb.length() <= 9){
num2 = Integer.parseInt(sb.toString().trim());
}
sb.delete(0,sb.length());
int resNum = num1 + num2;
sb = new StringBuffer(resNum + "");
String resStr = sb.reverse().toString();
char[] chs = resStr.toCharArray();
int[] resNums = new int[chs.length];
for(int i = 0;i < chs.length;i++){
if(Integer.parseInt(String.valueOf(chs[i])) < Integer.MAX_VALUE){
resNums[i] = Integer.parseInt(String.valueOf(chs[i]));
}
}
ListNode res = new ListNode(resNums[0]);//将数组中的数据转移到链表中去
ListNode help = res;//生成另一个节点,并让help指向res节点,help在此作为一个临时变量,help和res指向同一地址
for(int i = 1;i < resNums.length;i++){//由于已给res赋值,所以i从1开始
ListNode temp = new ListNode(resNums[i]);//每循环一次生成一个新的节点,并给当前节点赋值
help.next = temp;//将help的下一个节点指向生成的新的节点
help = temp;//将help指向最后一个节点(help的下一个节点)
}
return res;
}
具体的添加
ListNode res = new ListNode(resNums[0]);//将数组中的数据转移到链表中去
ListNode help = res;//生成另一个节点,并让help指向res节点,help在此作为一个临时变量,help和res指向同一地址
for(int i = 1;i < resNums.length;i++){//由于已给res赋值,所以i从1开始
ListNode temp = new ListNode(resNums[i]);//每循环一次生成一个新的节点,并给当前节点赋值
help.next = temp;//将help的下一个节点指向生成的新的节点
help = temp;//将help指向最后一个节点(help的下一个节点)
}
return res;