1)所以我做了一個有點修改形式的鏈接列表,它具有基於索引的尋址和其他刪除功能。我只是要複製我製作的頭文件...類設計問題(管理內存分配和釋放)
template<class T>
class LinkedList
{
public:
LinkedList();
~LinkedList();
int del_node(); // deletes the Node and element
int remove_node(); // deletes the Node only
int get_length();
int search_node(T*); // matches the pointer to see if its the same element
void add(T*);
void clear_list(); // calls deletes on all nodes and all elements
bool is_blank();
T& get_at(int); // operates like a vector get_at
private:
struct Node
{
T* element; // pointer passed to add(T*) is stored here.
Node* next;
}
現在看看我如何在鏈接列表中添加一個對象。我需要在我傳遞形式的
new Object()
當我增加了圖的頂點,這是特別有用的一個對象的指針通過。我剛剛輸入的數據,並從用戶等各個領域,並呼籲
LinkedList graph
graph.add(new Vertex(arguments));
現在有來的情況時,我不得不從LinkedList
A
一些元素複製到B
用於臨時存儲。現在我想在任何操作之後能夠從B
中刪除元素。但是,如果我使用delete
它會銷燬內部節點並刪除我傳遞給它的指針element
指向的對象。所以我創建了一個附加函數remove
,它只刪除節點,但不刪除element
指向的對象。
所以我想問問它是否可以這樣做,或者在我的列表中是否有設計錯誤,我不應該這樣做?我從圖書館的角度思考這個問題,例如我是否會去圖書館提供這個課程。這是合適還是會混淆人?任何意見,將不勝感激。
請,我不需要任何建議使用替代 函數/類/庫像載體。我正在學習數據結構,我有我自己設計的任何類型的數據結構。
你應該堅持的建議是不要用C++關鍵字命名你的函數/變量/類,比如'delete'。 – StoryTeller
哦,其實我命名它del xDD lemme更正它 –
繼從Story Teller的評論 - 你的頭文件甚至不會編譯,因爲使用語言關鍵字作爲函數名稱。像這樣發佈代碼告訴其他人你剛纔沒有太多想法就把頭部扔在一起,甚至沒有嘗試實現你描述的行爲。你需要比這更努力一點。 – Peter