我想知道如果菜单上选择了一个选项,如果不不断创建一个新列表,该如何将链接列表与菜单系统保持在一起?并且还想知道是否可以像在下面突出显示的图像的普通列表中一样,向列表中添加多个“恐龙”?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.");
}
}
}
}
'''
在该方法之外创建对列表的静态引用:
public static LinkedList Nodes = new LinkedList();
然后在需要时像Nodes.AddAtLast(xxx)
一样访问它。
关于您的其他问题,是的,您可以在列表中添加更多元素。但是列表(在您的img中)和链接列表(在您的代码中)之间有明显的区别。您似乎在一个不典型的列表中添加了有关单个恐龙的多个详细信息。您通常希望创建一个Dinosaur类,该类具有一些属性,例如您当前保存为单个节点的属性。