我在这里有一个自定义LinkedList(使用VS2013):
LinkedList.cs:
class LinkedList
{
public int Count { get; set; }
public Node Head { get; private set; }
public LinkedList()
{
head = null; // creates an empty linked list
count = 0;
}
public void AddFront(int n)
{
Node newNode = new Node(n);
newNode.Link = head;
head = newNode;
count++;
}
public void DeleteFront()
{
if (count > 0)
{
Node temp = head;
head = temp.Link;
temp = null;
count--;
}
}
}
我正在尝试添加一个自定义方法,名为AddMusicCDToFront(MusicCD cd)。 我已经拥有了MusicCD.cs类(它包含所有基本内容,以及构造函数):
public class MusicCD
{
public int Id { get; set; }
public string SingerName{ get; set; }
public string AlbumName { get; set; }
}
当我尝试将名为AddMusicCDToFront(MusicCD cd)的方法添加到LinkedList类时,如下所示:
public void AddMusicCDToFront(MusicCD cd)
{
Node music = new Node(300);
music.Link = cd;
}
VS2013抛出此错误:
无法将类型'MusicCD'隐式转换为'Node'
我觉得Node不应该这样做......但我不能完全理解为什么。 这是Node.cs:
class Node
{
public int Data{ get; set; }
internal Node Link { get; set; }
}
另外,如何遍历链接列表并打印出每个节点的数据?
答案 0 :(得分:0)
你不应该这样做:
public void AddMusicCDToFront(MusicCD cd)
{
Node newNode = new Node(cd);
newNode.Link = head;
head = newNode;
count++;
}
也许放一些Node
类的代码?
如果要更改Node类以存储MusicCD对象,请将int更改为MusicCD
class Node
{
private MusicCD data;
public MusicCD Data
{
get { return data; }
set { data = value; }
}
private Node link;
internal Node Link
{
get { return link; }
set { link = value; }
}
public Node(MusicCD d)
{
this.data = d;
}
}
有一种更可重用的方法可以通过泛型或继承来实现这一点,但这会让你自己阅读。