2010-04-05 4 views
1

Le programme suivant est une liste chaînée de base divisée en 3 classes.
Dans la classe testeur (principal), j'ajoute plusieurs numéros à la liste (triée).
Mais insteed d'obtenir les chiffres en raison i obtenir le résultat: LinkedList.LinkedList
quelque chose de mal avec le stringbuilder (le programme a d'abord été en Java où on a utilisé un tampon de chaîne, mais cela devrait être le même i penser?)LinkedList Wrong Display (générateur de chaînes)

LinkedListTester.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace LinkedList 
{ 
public class LinkedListTester 
{ 
    static void Main(string[] args) 
    { 
     LinkedList ll = new LinkedList(); 
     ll.addDataSorted(5); 
     ll.addDataSorted(7); 
     ll.addDataSorted(13); 
     ll.addDataSorted(1); 
     ll.addDataSorted(17); 
     ll.addDataSorted(8); 
     Console.WriteLine(ll); 
    } 
} 

}/*LinkedList*/ 

LinkedList.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace LinkedList 
{ 
public class LinkedList 
{ 
    //toestand 
    private LinkedListNode first; 
    private LinkedListNode last; 

    //gedrag 
    public LinkedList() 
    { 
     first = null; 
     last = null; 
    } 

    public void addDataInFront(int data) 
    { 
     first = new LinkedListNode(data, first); 
     if (last == null){ 
      last = first; 
     } 
    }/*addDataInFront*/ 

    public void addDataToBack(int data) 
    { 
     if (first == null) 
     { 
      addDataInFront(data); 
     } 
     else 
     { 
      last.setNext(new LinkedListNode(data, null)); 
      last = last.getNext(); 
     } 
    }/*addDataToBack*/ 

    public void addDataSorted(int data) 
    { 
     if (first == null || first.getData() > data) 
     { 
      addDataInFront(data); 
     } 
     else 
     { 
      LinkedListNode currentNode = first; 
      while (currentNode.getNext() != null && currentNode.getNext().getData() < data) 
      { 
       currentNode = currentNode.getNext(); 
      } 

      currentNode.setNext(new LinkedListNode(data, currentNode.getNext())); 
      currentNode = currentNode.getNext(); 

      if (currentNode.getNext() == null) 
      { 
       last = currentNode; 
      } 
     } 
    }/*addDataSorted*/ 

    public String toString() 
    { 
     StringBuilder Buf = new StringBuilder(); 
     LinkedListNode currentNode = first; 
     while (currentNode != null) 
     { 
      Buf.Append(currentNode.getData()); 
      Buf.Append(' '); 
      currentNode = currentNode.getNext(); 
     } 
     return Buf.ToString(); 
    }/*toString*/ 



}/*LinkedList*/ 

}/*LinkedList*/ 

LinkedListNode:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace LinkedList 
{ 
public class LinkedListNode 
{ 
    //toestand 
    private int data; 
    private LinkedListNode next; 
    private LinkedListNode previous; 

    //gedrag 
    public LinkedListNode(int data, LinkedListNode next) 
    { 
     this.data = data; 
     this.next = next; 
     this.previous = null; 
    } 

    public LinkedListNode(int data, LinkedListNode next, LinkedListNode previous) 
    { 
     this.data = data; 
     this.next = next; 
     this.previous = previous; 
    } 

    public LinkedListNode getNext() 
    { 
     return next; 
    } 

    public LinkedListNode getPrevious() 
    { 
     return previous; 
    } 

    public void setNext(LinkedListNode next) 
    { 
     this.next = next; 
    } 

    public void setPrevious(LinkedListNode previous) 
    { 
     this.previous = previous; 
    } 

    public int getData() 
    { 
     return data; 
    } 


}/*LinkedListNode*/ 
}/*LinkedList*/ 
+1

Il existe déjà une implémentation typesafe '' LinkedList dans .NET. Si c'est un devoir, merci de le marquer comme tel. –

Répondre

2
public **override** String **ToString**() 
{ 
    StringBuilder Buf = new StringBuilder(); 
    LinkedListNode currentNode = first; 
    while (currentNode != null) 
    { 
     Buf.Append(currentNode.getData()); 
     Buf.Append(' '); 
     currentNode = currentNode.getNext(); 
    } 
    return Buf.ToString(); 
}/*toString*/ 
+0

Merci, c'était exactement la cause! – Chris