C#の質問です。2つの互いに異なるLinkedListの要素の共通部分
C#の質問です。2つの互いに異なるLinkedListの要素の共通部分を返す関数を作ったのですが不具合がおきました。以下がコードです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
//A,Bという2つのLinkedListを受け取ったとき、A,Bの要素の共通部分を要素とした
//新たなLinkedList Cを返す関数 "kyotu"
private static LinkedList<int> kyotu(LinkedList<int> A, LinkedList<int> B)
{
LinkedList<int> C = new LinkedList<int>();
int D = A.Count();
for (int i = 0; i < D; ++i)
{
if (Search(A.First(), B) == 1)
{C.AddLast(A.First());
A.RemoveFirst();}
else
{A.RemoveFirst();}
}
return C;
}
//与えられたLinkedList Aに要素iが含まれているかを判定する関数"Search"
//含まれていれば1,そうでなければ0を返す。
private static int Search(int i, LinkedList<int> A)
{
int k = 0;
foreach (int n in A)
{
if (n == i)
{k = 1;
break;}
}
return k;
}
//与えられたLinkedList Aの要素を全部表示する関数"Display"
private static void Display(LinkedList<int> A)
{
foreach (int n in A)
{Console.Write(n + " ");}
Console.WriteLine();
}
//Main関数でAとBを適当に用意し、共通部分を表示させる
static void Main(string[] args)
{
int[] a = new int[] { 0, 1, 11, 4, 7, 12, 2, 5, 8, 9 };
LinkedList<int> A = new LinkedList<int>(a);
int[] b = new int[] { 23, 6, 12, 9, -1, 0, 8, 11 };
LinkedList<int> B = new LinkedList<int>(b);
Display(kyotu(A, B));
Display(kyotu(A, B));
}
}
}
出力結果;
「0 11 12 8 9
」
ここで問題なのは、2回目に呼んだDisplay(kyotu(A, B));がまったく表示されないということです。
詳しい方いらっしゃいましたら、アドバイスよろしくお願いいたします。コードが見づらいですが、すみません。
お礼
ありがとうございました。