简体   繁体   中英

Insert Items in a Linked List

Currently I am learning how to build my own linked list in C#. I have created a function called AddTrees that adds a tree to the end of the the list according to textboxes input: tree_name , tree_height , tree_price and tree_instock . I am requesting help in how I can modifiy my function to implementing a way to insert a tree between current and current.next_tree ?

Example

在此处输入图片说明

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;
   }
}

I don't know why you would have the ListForTrees class at all, since you have a linked list.

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;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM