2013-12-17 1 views
0

У меня есть пользовательский LinkedList здесь (с помощью VS2013):методы в пользовательской LinkedList

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 кд) к классу LinkedList как так:

public void AddMusicCDToFront(MusicCD cd) 
{ 
    Node music = new Node(300); 
    music.Link = cd; 
} 

VS2013 выдает эту ошибку:

Cannot implicitly convert type 'MusicCD' to 'Node'

у меня есть ощущение узла не должно быть сделано таким образом ... но я просто не могу достаточно поместить мою голову, почему. Вот в Node.cs:

class Node 
{ 
    public int Data{ get; set; } 

    internal Node Link { get; set; } 
} 

Кроме того, как я пройти связный список и распечатать данные каждого узла?

+0

Вы используете свойство «Ссылка» как ** как ** контейнер данных, так и ссылку на следующий узел. Вы должны использовать два свойства. –

+0

Должен ли я использовать данные и ссылку? – Ventus

ответ

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

Существует более многоразовый способ сделать это с дженериков или наследования, но это займет некоторое чтение с вашей стороны.

+0

Я добавил свой Node.cs. К сожалению, этот, который вы опубликовали, дал ошибку: 'Наилучшее перегруженное соответствие метода для 'Node.Node (int)' имеет некоторые недопустимые аргументы 28' – Ventus

+0

Собираетесь ли вы хранить объекты int и объекты MusicCD в такой же связанный список? Вероятно, вам нужны только объекты MusicCD, и в этом случае измените 'int data' на данные MusicCD. Я отредактирую свой ответ. –

+0

Спасибо за ваш ответ. Как мне пересечь связанный список? Я использую цикл for и 'Console.Write'? – Ventus

Смежные вопросы