Это домашнее задание
Я работаю над реализацией класса связанного списка для своего класса C ++, и конструктор копирования меня очень смущает.
Связанный список состоит из структур, называемых Elems:
struct Elem
{
int pri;
data info;
Elem * next;
};
Elem * head;
info - это отдельный пользовательский класс, который хранится в Elem.
подпись для конструктора копирования:
linkedList::linkedList( const linkedList &v )
Проблема, с которой я сталкиваюсь, заключается в том, чтобы взять мою логику и фактически написать ее как код.
Моя общая идея заключается в следующем:
- Установить головку на v.head(head = v.head)
- Установите значения элемента в 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;
}
Я почти уверен, что это работает.Я нарисовал несколько логических картинок, чтобы помочь, и я не столкнулся с какими-либо проблемами.