自定义LinkedList中的方法

时间:2013-12-17 10:22:03

标签: c# linked-list

我在这里有一个自定义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; }
}

另外,如何遍历链接列表并打印出每个节点的数据?

1 个答案:

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

有一种更可重用的方法可以通过泛型或继承来实现这一点,但这会让你自己阅读。