链接列表-如何保存整个程序c#中要调用的链接列表

问题描述 投票:-1回答:1

我想知道如果菜单上选择了一个选项,如果不不断创建一个新列表,该如何将链接列表与菜单系统保持在一起?并且还想知道是否可以像在下面突出显示的图像的普通列表中一样,向列表中添加多个“恐龙”?enter image description here

主要'''命名空间测试{班级计划{

    static void Main(string[] args)
    {

        DisplayMainMenu();

        static void DisplayMainMenu()
        {
            int menuChoice;
            Console.WriteLine("****************************************************************");
            Console.WriteLine("* Welcome to the Player Selection Menu *");
            Console.WriteLine("****************************************************************");
            Console.WriteLine("* 1. Create a New Dinosaur                                     *");
            Console.WriteLine("* 2. Print out the Linked List                                * ");
            Console.WriteLine("* 3. Remove a Dinosaur from the Linked List                    *");
            Console.WriteLine("* 4. Display a Dinosaurs information                           *");
            Console.WriteLine("* 5. Load Dinosaurs from File                                  *");
            Console.WriteLine("* 6. Save Dinosaurs to File                                    *");
            Console.WriteLine("* 7. Exit the Application                                      *");
            Console.WriteLine("****************************************************************");
            Console.WriteLine("Please specify your menu choice: ");
            string menuChoiceString = Console.ReadLine();
            menuChoice = Convert.ToInt32(menuChoiceString);
            DisplayMainMenuChoice(menuChoice);


            static void DisplayMainMenuChoice(int selection)
            {
                switch (selection)
                {
                    case 1:
                        Console.WriteLine("You have selected Create a New Dinosaur");
                        CreateDinosaur();
                        DisplayMainMenu();
                        break;
                    case 2:
                        Console.WriteLine("You have selected Print out the Linked List");
                        PrintLinkedList();
                        break;
                    case 3:
                        Console.WriteLine("You have selected Remove a Dinosaur from the Linked List");
                        RemoveDinosaur();
                        break;
                    case 4:
                        Console.WriteLine("You have selected Display a Dinosaurs information  ");
                        DisplayDinosaurInfo();
                        break;
                    case 5:
                        Console.WriteLine("You have selected Load Dinosaurs from File   ");
                        LoadDinosaur();
                        DisplayMainMenu();
                        break;
                    case 6:
                        Console.WriteLine("You have selected Save Dinosaurs to File  ");
                        SaveDinosaur();
                        DisplayMainMenu();
                        break;
                    case 7:
                        Console.WriteLine("You have selected exit the program");
                        Environment.Exit(0);
                        break;
                    default:
                        Console.WriteLine("You have made an illegal selection");
                        DisplayMainMenu();
                        break;

                }


            }
            static void CreateDinosaur()
            {
                LinkedList list = new LinkedList();
                Console.WriteLine("Please enter Dinosaur ID ");
                list.AddAtLast(Console.ReadLine());
                Console.WriteLine("Please enter Dinosaur Species");
                list.AddAtLast(Console.ReadLine());
                Console.WriteLine("Please enter Dinosaur Diet Type");
                list.AddAtLast(Console.ReadLine());
                Console.WriteLine("Please enter Dinosaur Period");
                list.AddAtLast(Console.ReadLine());
                list.PrintAllNodes();
                Console.WriteLine();
            }
            static void PrintLinkedList()
            {
                LinkedList list = new LinkedList();
                list.PrintAllNodes();
            }
            static void RemoveDinosaur()
            {

            }
            static void DisplayDinosaurInfo()
            {

            }
            static void LoadDinosaur()
            {
            }
            static void SaveDinosaur()
            { 
            }
        }
    }
}

}

'''LinkedList类

'''类LinkedList{专用节点头;当前私有节点; //这将有最新的节点public int Count;

    public LinkedList()
    {
        head = new Node();
        current = head;
    }
    public void PrintAllNodes()
    {
        //Traverse from head 
        Console.Write("Head ->");
        Node curr = head;
        while (curr.Next != null)
        {
            curr = curr.Next;
            Console.Write(curr.Value);
            Console.Write("->");
        }
        Console.Write("NULL");
    }
    public void AddAtStart(object data)
    {
        Node newNode = new Node() { Value = data };
        newNode.Next = head.Next;
        head.Next = newNode;
        Count++;
    }
    public void AddAtLast(object data)
    {
        Node newNode = new Node();
        newNode.Value = data;
        current.Next = newNode;
        current = newNode;
        Count++;
    }
    public void RemoveFromStart()
    {
        if (Count > 0)
        {
            head.Next = head.Next.Next;
            Count--;
        }
        else
        {
            Console.WriteLine("No element exist in this linked list.");
        }
    }
}

}

'''

c# list linked-list singly-linked-list doubly-linked-list
1个回答
0
投票

在该方法之外创建对列表的静态引用:

public static LinkedList Nodes = new LinkedList();

然后在需要时像Nodes.AddAtLast(xxx)一样访问它。

关于您的其他问题,是的,您可以在列表中添加更多元素。但是列表(在您的img中)和链接列表(在您的代码中)之间有明显的区别。您似乎在一个不典型的列表中添加了有关单个恐龙的多个详细信息。您通常希望创建一个Dinosaur类,该类具有一些属性,例如您当前保存为单个节点的属性。

© www.soinside.com 2019 - 2024. All rights reserved.