Я пытался поменять первые 2 узла в связанном списке, но столкнулся с проблемой - PullRequest
1 голос
/ 08 марта 2020

здесь a, b, c - указатели на первые 3 последовательных узла одиночного ll. Вопрос, который у меня есть, заключается в том, почему изменение ptr-> next = изменение адреса, сохраненного в b-> next

void sort(node **head){
int first=1;
node *ptr=*head;
if(first==1){
    first=0;
    if((ptr->data)>(ptr->next->data)){
        node *a=ptr;
        node *b=ptr->next;
        node *c=ptr->next->next;
        printf("\n%p\n",b->next);
        ptr=ptr->next;
        printf("\n%p,%p\n",b->next,c);
        ptr->next=a;
        printf("\n%p\n",a );
        printf("\n%p,%p\n",b->next,c);
        a->next=c;

        display(ptr);   

    }

, вывод, который я получаю,

0x55e7eb4b72e0

0x55e7eb4b72e0,0x55e7eb4b72e0

0x55e7eb4b72a0

0x55e7eb4b72a0,0x55e7eb4b72e0
5
6
4
2
...