次の図をご覧ください
これが私がそれを実装した方法です
template <typename T>
class LinkedList
{
struct Link {
T data;
struct Link *next;
public:
T *first;
};
LinkedList::LinkedList(void)
{
first = 0;
}
LinkedList::~LinkedList(void)
{
}
bool LinkedList::IsEmpty()
{
return (first==0);
}
void LinkedList::Insert(Link *newLink)
{
newLink->next = first;
first = newLink;
}
void LinkedList::Display()
{
Link *current = first;
while(current!=0)
{
current->Display();
current = current->next;
}
}
T *LinkedList::Find(int value)
{
Link *current = first;
while(current->GetData()!=value)
{
if(current->next==0)
{
return 0;
}
else
{
current = current->next;
}
}
return current;
}
T *LinkedList::Delete(const int id)
{
Link *current = first;
Link *previous = first;
while(current->GetData()!=id)
{
if(current->next==0)
{
return 0;
}
else
{
previous = current;
current = current->next;
}
}
if(current==first)
{
first = first->next;
}
else
{
previous->next = current->next;
}
return current;
}
};
私は自分の実装に不安を感じています。特に、 typeinsert()
を使用して、メソッド内で何をすべきかわかりません。T
次は別のクラスの図です。そのnext
ポインタは、武器がリンクリスト内のリンクを表すことです。これも「リンク」クラスなのか疑問でした。Nextは、リスト内の次の武器へのポインターです。上記のコードに影響する場合は、ここに投稿しました。
insert()
メソッド内でどのように対処しますか?それとは別に、私のリンクリストは正しいですか?とにかくリンクリストのテンプレートで初めて。助けてください!
注:組み込みのデータ構造は許可されていません。それが、クラス図を投稿した理由です。データ構造サポートを構築する必要がある場合は、自分でコードを構築する方法を尋ねていません。