Это домашнее задание
Я работаю над реализацией связанного класса списка для моего класса С++, и конструктор копирования для меня очень запутан.
Связанный список состоит из структур, называемых Elems:
struct Elem
{
int pri;
data info;
Elem * next;
};
Elem * head;
info - это отдельный пользовательский класс, который хранится в элементе.
подпись для конструктора копирования:
linkedList::linkedList( const linkedList &v )
Проблема, с которой я сталкиваюсь, в основном использует мою логику и фактически записывает ее как код.
Моя общая идея:
- Установите головку в v.head(head = v.head)
- Установите значения Elem в v (pri = v.pri, info = v.info, next = v.next)
- Повторите шаг, повторив шаг 2.
Это общая идея?
Любая помощь будет отличной. Помните, что это домашнее задание, поэтому нет прямых ответов!
Спасибо за ваше время
=============================================== ================================================== ================================================== =================
Спасибо за ваше время!
Я думаю, что я понял:
//Copy Constructor
LinkedList::LinkedList( const LinkedList &v )
{
Elem * p1 = 0;//current
Elem * p2 = 0;//next
if( v.head == 0 )
head = 0;
else
{
head = new Elem;
head -> pri = v.head -> pri;
head -> info = v.head -> info;
p1 = head;
p2 = v.head -> next;
}
while( p2 )
{
p1 -> next = new Elem;
p1 = p1 -> next;
p1 -> pri = p2 -> pri;
p1 -> info = p2 -> info;
p2 = p2 -> next;
}
p1 -> next = 0;
}
Я уверен, что работает. Я обратил внимание на некоторые логические снимки, и я не столкнулся с какими-либо проблемами.