de manière itérative, copie d'une liste de liens

C'est un devoir à la maison. Pour modifier le récursive copie en profondeur de la méthode dans un processus itératif équivalent. Je suis venu près, et besoin de votre aide pour le faire.
Récursive de mise en œuvre:

public static StringNode copy(StringNode str) {
        if (str == null)
            return null;

        StringNode copyFirst = new StringNode(str.ch, null);
        copyFirst.next = copy(str.next);
        return copyFirst;
    }

Voici ce que j'ai trouvé, l'itératif équivalent. Le static length() méthode a déjà été mis en œuvre pour retourner le nombre de nœuds sont là dans une liste de liens.

public static StringNode copy(StringNode str) {
    if (str == null)
        return null;

    StringNode firstNode = new StringNode(str.ch ,null);
    StringNode prevNode = firstNode;
    StringNode nextNode;

    for (int i = 1; i < length(str); i++) {
        nextNode = new StringNode(str.next.ch, null);
        prevNode.next = nextNode;
        prevNode = nextNode;
    }

    return firstNode;
}

Le problème: pour tester mon application, j'ai créer une liste liée str1 avec la valeur du caractère, 'n', 'b', 'a', puis d'appeler

StringNode copy = StringNode.copy(str1);

puis-je supprimer le dernier nœud de str1, laissez le comme ça 'n','b',
cependant, lorsque j'essaie d'imprimer le contenu stocké dans la copie, je reçois
'n', 'b', 'b' au lieu de 'n', 'b', 'a'.

Des suggestions?

OriginalL'auteur Hank | 2012-11-06