用c#建立一个单链表存储选修数据结构课程学生的信息,并将结果显示到屏幕上,对建好的单链表实现查找,插入,删除,修改等操作
时间: 2024-10-19 11:09:50 浏览: 8
在C#中,我们可以使用类和结构体来创建一个单链表存储学生信息。首先,我们需要定义一个`Student`类表示每个学生,包含姓名、学号和选修课程等属性。然后,创建一个`Node`结构体来构成链表节点,包含学生对象和指向下一个节点的引用。
```csharp
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public List<string> Courses { get; set; }
public Student(int id, string name)
{
Id = id;
Name = name;
Courses = new List<string>();
}
}
public struct Node
{
public Student Data;
public Node Next;
}
```
接下来,我们创建一个`LinkedList`类来管理这个链表,提供查找、插入、删除和修改等方法:
```csharp
public class LinkedList
{
private Node head;
// 插入操作
public void Insert(Student student)
{
if (head == null)
head = new Node { Data = student };
else
{
Node current = head;
while (current.Next != null)
current = current.Next;
current.Next = new Node { Data = student };
}
}
// 查找操作
public bool FindStudentById(int id)
{
Node current = head;
while (current != null)
{
if (current.Data.Id == id)
return true;
current = current.Next;
}
return false;
}
// 删除操作
public void DeleteStudentById(int id)
{
if (head == null || head.Data.Id != id)
return;
Node previous = null, current = head;
while (current.Next != null && current.Data.Id != id)
{
previous = current;
current = current.Next;
}
if (current.Data.Id == id)
{
if (previous == null)
head = current.Next;
else
previous.Next = current.Next;
}
}
// 修改操作
public void UpdateStudent(string newName, int oldId, string newCourse)
{
if (FindStudentById(oldId))
{
var foundStudent = head;
while (foundStudent != null)
{
if (foundStudent.Data.Id == oldId)
{
foundStudent.Data.Name = newName;
foundStudent.Data.Courses.Add(newCourse);
break;
}
foundStudent = foundStudent.Next;
}
}
}
// 显示链表内容
public override string ToString()
{
StringBuilder result = new StringBuilder();
PrintList(result);
return result.ToString();
}
private void PrintList(StringBuilder sb)
{
Node current = head;
while (current != null)
{
sb.AppendLine($"{current.Data.Id}: {current.Data.Name}, Courses: {string.Join(", ", current.Data.Courses)}");
current = current.Next;
}
}
}
```
现在你可以创建一个`LinkedList`实例并进行各种操作了:
```csharp
public static void Main(string[] args)
{
LinkedList list = new LinkedList();
// 插入学生
list.Insert(new Student(1, "小明"));
// ...
// 显示链表
Console.WriteLine(list);
// 查找、删除、修改操作...
// 输出链表再次确认更新
Console.WriteLine(list);
}
```
阅读全文