链表复制操作图

文章目录

    • 1. 单链表复制
    • 2. 单链表复制的实际应用

1. 单链表复制

public class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
        val = x;
    }


    public String sout(ListNode listNode){
        ListNode newNode =listNode;
        StringBuffer stringBuffer =new StringBuffer("");
        while (newNode!=null){
            stringBuffer.append(newNode.val+",");
            newNode=newNode.next;
        }
        return stringBuffer.toString();
    }
}

链表

ListNode a1 =new ListNode(1);//a=1
ListNode b =a1;//b=1
b.next =new ListNode(4);//b=1,4,a=1,4
b=b.next;//b=4
b.next =new ListNode(5);//b=4,5,a=1,4,5
b=b.next;//b=5
System.out.println(a1.sout(a1));//1,4,5
System.out.println(b.sout(b));//5

具体的操作图如下:
第一步:给A1分配内存空间
链表复制操作图_第1张图片
2. b指向a1的内存空间
链表复制操作图_第2张图片
3. 在内存空间的NULL开辟一个新的节点4,节点4和节点1用指针关联
这时a1,b的值都是1,4

链表复制操作图_第3张图片

4.b放弃原先的内存地址,改指向节点4所代表的新地址,此时a1的值不变还是1,4
链表复制操作图_第4张图片
5. 后面依旧,b变成了5,a1变成了1,4,5

2. 单链表复制的实际应用

力扣第二题:两数相加:题目地址

我的解答:题解

你可能感兴趣的:(数据结构)