請看看下面的圖創建鏈接列表作爲模板:我的實現是否正確?
這是我是如何實現它
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
指針是武器代表鏈接列表中的鏈接。我懷疑這是不是「鏈接」類。接下來是一個指向列表中下一個武器的指針。如果它影響到上面的代碼,我在這裏發佈它。
如何應對的方法insert()
裏面?除此之外,我的鏈接列表是否正確?無論如何,第一次使用鏈接列表的模板。請幫忙!
注:不允許內置數據結構。這就是爲什麼我發佈了班級的圖表。如果我需要在數據結構支持中構建,那麼我不會問如何由我的自己構建代碼。
爲什麼不使用可用的許多鏈表實現之一? – dtech 2013-02-27 09:12:23
如果可能,請使用'std :: list'或其他標準庫容器,除非有真正的理由不這樣做。 – 2013-02-27 09:15:54
@ddriver:nono,需要我自己做 – 2013-02-27 10:02:52