链表的指针指向问题(本人纯通过刷题了解链表,还没有正式开始学习)

    ListNode* map=new ListNode(0);
    while(head!=NULL){
        ListNode* temp=map;
        ListNode* head2=head->next;//记录后结点,防止插入时被改
        while(temp->next!=NULL){
            temp=temp->next;
        }
        head->next=temp->next;
        temp->next=head;//插入
        head=head2;
    }

上面的代码中temp->next已指向head的地址,但head的地址马上就改变了,那temp->next指向了新的地址,有什么意义呢?但跑的时候,却发现temp->next没有改变。
BTW:head是已知链表

假设
head=0x1000;
head2=0x2000;
语句temp->next=head; //相当于temp->next=0x1000
语句head=head2; //相当于head=0x2000
这是从纯语法上来说的

我个人感觉你的这个插入函数有问题,请问你的这个函数是想要把
新建立的map插入到已经存在的head这个链表里面吗?如果是这样,
那么应该这么写:
ListNode* map=new ListNode(0);
ListNode* temp=head;
if(temp==NULL)
{
head=map;
head->next=NULL;
return;
}
while(temp->next!=NULL){
temp=temp->next;
}
temp->next=map;//插入
map->next=NULL;

    //评论下不下,写这里了
    head=0x1000; 
    head2=0x2000; 
    temp->next=head; //相当于temp->next=0x1000
    head=head2; //相当于head=0x2000  ,这时候temp->next还是指着0x1000(也就是执行赋值语句时p1的值)。 赋值语句只是把一个变量的值传递给另一个变量,两个变量并没有特别的动态关系(也就是执行赋值之后,一个变量变了,另一个变量不会跟着变)。
    再举一个简单的例子:
    int a=1;
    int b=a;
    a=2;
    //这时候b=1,a=2