06
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

LinkedListが…

LinkedList.Remove(T)ってメソッドの削除時間がO(1)じゃないっぽい
これ使おうと思ったけど自分で実装した方が良さそうだなぁ~

TaskListの実装方法はこんな感じ

class Task
{

Task Prev,Next;
TaskList TaskList;

}

って前のタスクと後ろのタスク,自分自身のタスクリストがあって
TaskListには最大数のCapacityと現在のタスク数Countがある
追加

public void Add(Task t)
{
if (Capacity > Count && t.TaskList == null)
{
t.Prev = Head.Prev;
t.Prev.Next = t;
Head.Prev = t;
t.Next = Head;
Count++;
}
}

削除

public void Remove(Task t)
{
if (t.TaskList == this)
{
(t.Prev.Next = t.Next).Prev = t.Prev;
t.Next = t.Prev = null;
Count--;
}
}

で、こうすると
t.Next = t.Prev = null;
は生きてるとGCが拾ってくれなさそうなので

追加はTaskのリストがnullの時のみかつ最大値を超えていなければ有効
削除はTask自身のタスクリストからのみ有効

まぁ、Task側から削除したければTaskList.Remove()で終了
スポンサーサイト

Comment

Secret

検索フォーム

RSSリンクの表示

リンク

リンクというか個人的によく使うアルゴリズムの解説サイト… C#でなかったりする

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。