typedef int element;


typedef struct ListNode{

element data;

struct ListNode *link;

} ListNode;



ListNode* concat_list(ListNode *head1, ListNode *head2)

{

if (head1 == NULL) return head2;  

else if (head2 == NULL) return head1;

else{

ListNode *p;

p = head1; //  

while (p->link != NULL)

p = p->link;  

p->link = head2;

return head1;

}

}


여기서 p가 포인터 여서 주석단 부분에서 p가 바뀌면 head1도 같이 바뀌는 거지?

그래서 마지막에 head1 리턴하는거고