Я новичок в кодировании cpp, и я не понимаю, как мы можем получить следующие результаты об объекте узлов? может ли кто-нибудь помочь?Вывод функций, основанных на узлах
Заранее спасибо :)
Выход следующей программы
Вот код:
void display(Node *head){
if(head == NULL)
cout<<"head is NULL"<<endl;
for(Node *tmp=head; tmp!=NULL; tmp = tmp->next)
cout<<" "<<tmp->data;
cout<<endl;
}
Node *func1(int value1, int value2, int value3){
Node *head = new Node;
head->next = new Node;
head->next->next = new Node;
head->next->next->next = NULL;
head->data = value1;
head->next->data = value2;
head->next->next->data = value3;
return head;
}
void func2(Node *head1, Node *head2, Node *head3){
head1->next = head3;
head1->next->data =3;
head1= head2;
head1->data = 5;
head1->next->data = 7;
head2 = head3;
head3 = head1;
}
void func3(Node *head){
for(; head!= NULL; head = head->next)
head->data *=2;
}
int main(){
Node *head1 = func1(10,20,30);
Node *head2 = func1(2,4,6);
Node *head3 = func1(11,22,33);
func2(head1, head2, head3);
display(head1);
display(head2);
display(head3);
head1 = func1(1,2,3);
func3(head1);
display(head1);
return 0;
}
EDIT:
может кто-нибудь объяснить, как мы можем видеть изменения в элементах данных, хотя мы не можем видеть изменения локальных указателей? Я предполагаю, что мы не должны видеть никаких изменений данных, так как главные указатели являются копиями реальных?
Например, мы можем видеть head1-> data = 5, но часть head2 = head1 не имеет никакого эффекта. Зачем?
Я очень очень смущен об этой теме, пожалуйста, помогите :(
Вам нужно будет уточнить, что вы не понимаете. Вы ожидаете, что он выведет что-то еще? –
в func2 мы делаем head2 = head3 и head2 = head1, но когда я применяю эти равенства, я не могу получить тот же результат, что и выше – cppnewer
Я думаю, что порядок выходов должен быть совершенно другим из-за этих уравнений – cppnewer