Не могу понять поведение в варианте моего кода - PullRequest
0 голосов
/ 24 сентября 2019

Положение цикла while в моем коде изменяет поведение вывода, хотя логика мне кажется такой же.Я создал две функции для связанного списка, одну для отображения и одну для добавления новых узлов;Вариант, который я пытаюсь понять, это цикл while, который лежит в функции addnode. Первая 1 возвращает только 22 и 44 в качестве вывода, а вторая отображает весь список.

Я пытался нарисовать его, но я все ещене могу понять почему?

//code 1
#include <iostream>                                                             
using namespace std;

struct Node {
int data;
Node *next;
};
void initNode(Node *temphead, int n){
temphead->data=n;
temphead->next=NULL;}


 void display(Node *temphead){
 while(temphead!=NULL){
 cout<< temphead->data << " ";
temphead=temphead->next;
 }}

void addnode(Node *addnode, int n){

Node *newnode= new Node;
newnode->data=n;
newnode->next=NULL;
addnode->next= newnode;
while(addnode->next!=NULL){
    addnode=addnode->next;}

}

int main()
{
Node *head;
head = new Node;
initNode(head,22);
addnode(head,33);
addnode(head,44);
display(head);

   return 0;
}


//code 2(altered position of the while loop)
void addnode(Node *addnode, int n){
while(addnode->next!=NULL){
    addnode=addnode->next;}
Node *newnode= new Node;
newnode->data=n;
newnode->next=NULL;
addnode->next= newnode;


}


...