2014-11-04 6 views
-1

Heres моя связанная программа списка с нуля. Я сумел получить мой список для отображения, но теперь я хочу, чтобы отобразить количество элементов в списке в качестве межд, что в моем случае был бы 3.Метод связанного списка help C#

Может кто-нибудь дать мне несколько советов

Главная:

class Program 
    { 
     static void Main(string[] args) 
     { 
      LinkList testList = new LinkList(); 

      testList.AddItem(5); 
      testList.AddItem(10); 
      testList.AddItem(12); 
      testList.DisplayItems(); 

      Console.WriteLine(testList.NumberOfItems()); /// Still to do 


      Console.ReadKey(); 
     } 
    } 
} 

Класс для LinkList:

class LinkList 
     { 
     private Link list = null; //default value – empty list 

     public void AddItem(int item) //add item to front of list 
     { 
      list = new Link(item, list); 
     } 

     public void DisplayItems() // Displays items in list 
     { 
      Link temp = list; 
      while (temp != null) 
      { 
       Console.WriteLine(temp.Data); 
       temp = temp.Next; 
      } 

     } 

     public int NumberOfItems() // returns number of items in list 
     { 
      Link temp = list; 
      while (temp != null) 
      { 
      /// How can i display the number of items in list as an int? 
      }  


      } 


    } 

} 

Класс для ссылки:

class Link 
{ 
    private int data; 
    private Link next; 

    public Link(int item) //constructor with an item 
    { 
     data = item; 
     next = null; 
    } 
    public Link(int item, Link list) //constructor with item and list 
    { 
     data = item; 
     next = list; 
    } 

    public int Data //property for data 
    { 
     set { this.data = value; } 
     get { return this.data; } 
    } 

    public Link Next //property for next 
    { 
     set { this.next = value; } 
     get { return this.next; } 
    } 

    } 
} 
+0

Что вы пробовали? У тебя есть идеи? Где вы застряли в поисках, чтобы получить счет? –

+4

Если вы знаете, как проходить через список и отображать элементы, вы знаете, как проходить через список и подсчитывать их. Кроме того, если вы создаете счетчик, и ваш метод 'AddItem' увеличит этот счетчик, тогда' NumberOfItems' может быть реализован в O (1) вместо O (n). – dcastro

+0

В принципе, вы зацикливаете свой список (как это делается при его отображении) и увеличиваете внутренний счетчик – HimBromBeere

ответ

0

Вам нужно перебирать список (как это было сделано в Display)

public void DisplayItems() // Displays items in list 
    { 
     Link temp = list; 
     while (temp != null) 
     { 
      Console.WriteLine(temp.Data); 
      temp = temp.Next; 
     } 

    } 

    public int NumberOfItems() // returns number of items in list 
    { 
     Link temp = list; 
     int i = 0; 
     while (temp != null) 
     { 
      temp = temp.Next; 
      i++; 
     }  
     return i; 
    } 
1

Таким образом, объявить приватную переменную для числа элементов, то на метод Add увеличить. В конце добавьте свойство, чтобы вернуть эту приватную переменную в виде открытого Int.

Это должно работать:

 public class LinkList 
     { 
      private Link list = null; //default value – empty list 

      private numberOfItems = 0; 

      public void AddItem(int item) //add item to front of list 
      { 
       list = new Link(item, list); 
       numberOfItems++; 
      } 

      public void DisplayItems() // Displays items in list 
      { 
       Link temp = list; 
       while (temp != null) 
       { 
        Console.WriteLine(temp.Data); 
        temp = temp.Next; 
       } 

      } 

      public int NumberOfItems 
      { 

       get {return numberOfItems; } 

      } 

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