給定一個表示社交網絡的數據結構,編寫一個查找某種程度的朋友的函數。第一學位的朋友是會員的直接朋友,第二學位的朋友是除一級朋友之外的會員朋友的朋友等。在C#中使用某種模式實現這一點的最佳方式是什麼?
例如,如果A是朋友,B和B是朋友,C ,那麼GetFriendsOfDegree(A,2)應該返回C,因爲C是A的唯一二級朋友(B是A的一級朋友)。
Method name: GetFriendsOfDegree
using System;
using System.Collections.Generic;
public class Member
{
public string Email { get; private set; }
public ICollection<Member> Friends { get; private set; }
public Member(string email) : this(email, new List<Member>())
{
}
public Member(string email, ICollection<Member> friends)
{
this.Email = email;
this.Friends = friends;
}
public void AddFriends(ICollection<Member> friends)
{
foreach (Member friend in friends)
this.Friends.Add(friend);
}
public void AddFriend(Member friend)
{
this.Friends.Add(friend);
}
}
public class Friends
{
public static List<Member> GetFriendsOfDegree(Member member, int degree)
{
throw new NotImplementedException("Waiting to be implemented.");
}
public static void Main(string[] args)
{
Member a = new Member("A");
Member b = new Member("B");
Member c = new Member("C");
a.AddFriend(b);
b.AddFriend(c);
foreach (Member friend in GetFriendsOfDegree(a, 2))
Console.WriteLine(friend.Email);
}
}
家庭作業?真的嗎?... – squill25
不..只是wa'nna檢查我是否用正確的方式,或者有人有另一個理想來實現?! –