Связные списки c++ и как с ними обращаться
Не могу разобраться со связными списками. Делаю лабораторную работу(1 курс), есть методичка, которая дает 0 понимания. Почитал гугл, в общих чертах понял смысл, но не могу догнать некоторых моментов:
struct Link
{
int data;
Link *next;
};
int main()
{
Link* first = 0;
Link* last = 0;
Link* link = 0;
int k = 1;
link = new Link();
link->data = k;
link->next = 0;
first = link;
last = link;
}
1.Почему и для чего мы создаем 3 указателя (first, last,link) и инициализируем нулем. 2.Зачем мы в последних 2х строчках приравниваем first и last к link? Получается мы в указатель помещаем структуру? 3.Посоветуйте, пожалуйста, годную литературу по этому вопросу.