请看下图
这就是我实现它的方式
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;
}
};
我对我的实施感到不舒服。特别是,我不知道在insert()
方法内部做什么,使用T
类型。
下面是另一个类的图,它的next
指针是 Weapons 代表链表中的链接。我怀疑这是否也是“链接”类。Next 是指向列表中下一个武器的指针。如果它影响上述代码,我将其发布在这里。
方法里面怎么处理insert()
?除此之外,我的链接列表是否正确?无论如何,第一次使用链接列表的模板。请帮忙!
注意:不允许内置数据结构。这就是我发布课程图的原因。如果我需要内置数据结构支持,那么我不会问如何自己构建代码。