2012-12-09 5 views
0

Actuellement j'apprends comment construire ma propre liste chaînée en C#. J'ai créé une fonction appelée AddTrees qui ajoute un arbre à la fin de la liste en fonction des entrées de zones de texte: tree_name, tree_height, tree_price et tree_instock. Je demande de l'aide dans la façon dont je peux modifiy ma fonction de mettre en œuvre un moyen d'insérer un arbre entre le courant et current.next_tree?Insérer des éléments dans une liste chaînée

Exemple

enter image description here

public class TheTrees 
{ 
    private string tree_type = " "; 
    private int tree_height = 0; 
    public double tree_price = 0; 
    private int tree_instock = 0;    

    public TheTrees next_tree; 

    public TheTrees(string newtree, int newheight, int newinstock, double newprice) 
    { 
     tree_type = newtree; 
     tree_height = newheight; 
     tree_price = newprice; 
     tree_instock = newinstock;     

     next_tree = null; 
    } 

    public override string ToString() 
    { 
     return tree_type + " " + tree_height + " " + 
       tree_price + " " + tree_instock; 
    } 
} 

public class ListForTrees 
{ 
    public TheTrees first_tree; 
    public TheTrees last_tree; 
    public int count = 0; 

    public ListForTrees(TheTrees new_tree) 
    { 
     first_tree = new_tree; 
     last_tree = new_tree; 
     count = 1; 
    } 

    public ListForTrees() 
    { 
    } 

    public void AddTree(TheTrees new_tree) 
    { 
     TheTrees current = first_tree; 

     if (count == 0) 
     { 
      first_tree = new_tree; 
      last_tree = new_tree; 
      count = 1; 
     } 
     else if (count != 0) 
     { 
      if (new_tree.tree_price <= first_tree.tree_price) 
      { 
       new_tree.next_tree = first_tree; 
       first_tree = new_tree; 
      } 
      else if (new_tree.tree_price >= last_tree.tree_price) 
      { 
       last_tree.next_tree = new_tree; 
       last_tree = new_tree; 
      } 
      else 
      { 
       while (new_tree.tree_price > current.next_tree.tree_price) 
       { 
        current = current.next_tree; 
       } 

       new_tree.next_tree = current.next_tree; 
       current.next_tree = new_tree; 
      } 

      count++; 
     } 
    } 

    public void ClearTrees() 
    { 
     first_tree = null; 
     count = 0; 
    } 
} 

Répondre

0

Je ne sais pas pourquoi vous auriez la classe ListForTrees du tout, puisque vous avez une liste chaînée.

var oak = new TheTrees("Oak", 6, 2.00, 6); 
var cypress = new TheTrees("Cypress", 20, 80.00, 2); 
var evergreen = new TheTrees("Evergreen", 25, 50.00, 6); 

//add evergreen after cypress 
oak.next_tree = evergreeen; 

//insert cypress 
cypress.next_tree = oak.next_tree; 
oak.next_tree = cypress; 
+0

Cela aide un peu, mais pas vraiment. les arbres sont créés à partir des entrées de l'utilisateur. textBoxes – CodingWonders90

+0

Peut-être que je ne comprends pas le problème. Je ne vois certainement pas ce qu'il en est des textBoxes qui font que cette solution ne s'applique pas. D'autre part, je ne comprends pas vraiment pourquoi vous voulez une liste chaînée de toute façon, au lieu d'une liste régulière '' . – tallseth

+0

Je suis heureux d'ajouter quelques détails plus utiles si je comprends ce que vous recherchez. – tallseth

Questions connexes