Esta es la tareaCreación de un constructor de copia de una lista enlazada
estoy trabajando en la implementación de una clase de lista enlazada para mi clase de C++, y el constructor de copia tiene ser muy confuso para mí.
La lista enlazada se compone de estructuras denominadas elems:
struct Elem
{
int pri;
data info;
Elem * next;
};
Elem * head;
información es una clase separada, a medida que se almacena en el Elem.
la firma para el constructor de copia es:
linkedList::linkedList(const linkedList &v)
El problema que estoy teniendo es sobre todo tomando mi lógica y escribir realmente como código.
Mi idea general es:
- Conjunto cabeza para v.head (= cabeza v.head)
- Establecer los valores de la Elem a (v.pri pri = de v, info = v.info , junto = v.next)
- Iterar a través, repitiendo el paso 2.
Es esta la idea general?
Cualquier ayuda sería genial. Recuerda, esto es tarea, ¡así que no hay respuestas directas, por favor!
Gracias por su tiempo
=================================== =============================================== =============================================== ==========================
Gracias por su tiempo a todos!
creo que tengo todo resuelto:
//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;
}
Estoy bastante seguro de que las obras. Dibujé algunas imágenes lógicas para ayudar, y no me encontré con ningún problema.
Exactamente ¿qué se supone que debe hacer el constructor de copias? Producir una copia de cada nodo con enlaces apropiados suena razonable, pero esa no es la única posibilidad. –
+1 Por decir sin rodeos la tarea * y no pedir respuestas directas *. –
¡Gracias por darme la pista correcta!Implementé un constructor de copia profunda para mis nodos, para poder devolver un objeto del nodo "final" con la estructura de referencia para el nodo padre y su nodo padre ... para mantenerme intacto. Lo usé para algoritmos de búsqueda de árbol – mtosch