算法——链表相关的记录

将一个数组中的所有数添加到一个单向链表中

刷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;
发布了122 篇原创文章 · 获赞 1 · 访问量 7338

猜你喜欢

转载自blog.csdn.net/qq_36079912/article/details/104255492