Основная проблема здесь:
temp=Tail;
Вы изменяете то, на что указывает temp
перед настройкой данных. Таким образом, все вещи после этого модифицируют Tail
, а не temp
. Это также приводит к утечке памяти.
Существуют и другие проблемы, например, Tail
всегда равняется nullptr
, поскольку его необходимо назначать при назначении Head
. Кроме того, в конце вы неправильно связываете temp.
void Add()
{
struct Data *temp = new Data;
if (!temp) return;
temp->Next = nullptr;
cout<< "Enter Your name :";
cin>> temp->name;
cout<< "Enter Your Age :";
cin>> temp->age;
cout<< "Enter Your Address:";
cin>> temp->address;
cout<< "Enter Your Occupation";
cin >>temp->occupation;
if (!Head) {
Head = Tail = temp;
}
else {
Tail->next = temp;
Tail = temp;
}
}
Обратите внимание, что вы также можете установить данные после связывания, если вы не измените то, на что указывает temp
:
void Add()
{
struct Data *temp = new Data;
if (!temp) return;
temp->Next = nullptr;
if (!Head) {
Head = Tail = temp;
}
else {
Tail->next = temp;
Tail = temp;
}
cout<< "Enter Your name :";
cin>> temp->name;
cout<< "Enter Your Age :";
cin>> temp->age;
cout<< "Enter Your Address:";
cin>> temp->address;
cout<< "Enter Your Occupation";
cin >>temp->occupation;
}