Я тут задание выполнял и не понимаю в чём дело.... c++
задание: 4. Создать структуру, которая хранит имя человека и его номер телефона. Создать очередь из 5-ти структур и вывести результат. Помним, что в очереди кто первым записался, тот первым и обслуживается.
У меня выскакивает ошибка 
#include <iostream>
#include <string>
using namespace std;
struct str
{
string name;
int number;
str* next;
};
int main()
{
str* first = new str;
str* tekp = new str;
str* tek = new str;
delete tek;
cout << "Enter name 1 man: ";
cin >> first->name;
cout << "Enter number 1 man: ";
cin >> first->number;
for (int i = 2; i < 6; i++)
{
if (i == 2) {
str* tek = new str;
first->next = tek;
tekp = tek;
}
else
{
str* tek = new str;
tek->next = tekp;
tekp = tek;
}
cout << "Enter name " << i << " man: ";
cin >> tek->name;
cout << "Enter number " << i << " man: ";
cin >> tek->number;
}
str * uq = first;
while (uq)
{
cout << uq->name << " " << uq->number << "\n";
uq = uq->next;
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Намекаю большим намеком:
str* tek = new str;
delete tek;
Теперь tek указывает... да в никуда. На освобожденную память.
if (i == 2) {
str* tek = new str;
Тут вы работаете с вот этим tek, из предыдущей строки.
first->next = tek;
tekp = tek;
}
else
{
str* tek = new str;
И тут тоже вы работаете с вот этим tek, из предыдущей строки.
tek->next = tekp;
tekp = tek;
}
А с КАКИМ tek вы имеете дело в следующих строках?
cout << "Enter name " << i << " man: ";
cin >> tek->name;
cout << "Enter number " << i << " man: ";
cin >> tek->number;
Надеюсь, это вас научит внимательнее смотреть на предупреждения компилятора, а заодно именовать свои переменные разнообразнее...