Темп связанного списка изменяется автоматически - PullRequest
0 голосов
/ 23 сентября 2018

У меня возникают проблемы с пониманием, почему temp меняет свое значение с 9 на 1 после выражения:

last->data = (*head_ref)->data;

Моя текущая цель - обратить данные в первом и последнем узле связанного узла.список, содержащий 1, 3, 5, 7 и 9.

Результат, который я получаю, равен 9, 3, 5, 7, 9.

Если temp равно последнемучто равно head_ref, изменится ли последний эффект temp, хотя я не установил temp = last после изменения последнего?

void reverseNode(struct Node** head_ref)
{
    struct Node *last = *head_ref;
    while(last->next != NULL)
    {
        last = last->next;
    }
    struct Node *temp = last;
    printf("%d ", temp->data);      // temp->data = 9
    last->data = (*head_ref)->data;
    printf("%d ", temp->data);      // temp->data = 1
    (*head_ref)->data = temp->data;
}

Спасибо!

1 Ответ

0 голосов
/ 23 сентября 2018
void reverse(){
struct node *first=NULL,*second=start,*third=start->next;
if(start==NULL){
    printf("No Element to Reverse\n");
}else{
    while(second!=NULL){
        second->next=first;
        first=second;
        second=third;
        if(third!=NULL){
            third=third->next;
        }
    }

    start=first;
}
display(); }

Этот код перевернет весь связанный список без потери данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...