隨意編輯標題,engrish有時會混淆而不是幫助。創建指針的指針並進行修改而不修改原始指針?
我必須使(和不,我不能改變,這是它的方式必須是)簡單的鏈接列表。 否我不能使用STL或std :: list。大部分工作都是在紙上完成的,但我似乎遇到了實現非常基本的光標的問題。
這是列表中的我的節點(的一部分):
struct Node {
int ap_nr;
Node *next;
};
我想要走線槽我添加節點功能列表:
void add_node (Node **begin, int ap_nr)
{
stuff happens
}
這是我如何調用函數:
add_node(&(*begin), ap_nr);
我想要創建一個從開始(我的列表的頭)開始的光標,並通過每個節點我們槽荷蘭國際集團cursor->next
直到我到達終點(while (cursor->next!=0))
,但我不能簡單地說:
Node *cursor;
cursor = new Node;
cursor = begin;
因爲這將直接覆蓋光標首先,讓我嘗試無效。我仍然需要做一個指針才能開始並能夠調用STRUCT函數「 - > next」
我該怎麼做?
*還*我該如何記住以前的節點?我可以這樣做:
Node *previous;
previous = new Node;
previous = &(*begin); // ?
'&(* begin)'完全等同於'begin',那麼爲什麼不在調用add_node時使用那個呢? – celtschk 2012-04-02 17:33:40
首先,在C++的英文討論中通常使用「迭代器」,而不是「遊標」。其次,你不提供太多的信息。你是說你想使用一個Node結構*作爲一個迭代器,並且也是一個數據容器? – 2012-04-02 17:34:41
每個節點都是獨立的......它擁有它需要的所有信息,我需要做的唯一修改是添加一個或刪除一個(暫時)。我想要一種從一個節點轉到另一個節點的方式(列表不過是鏈接節點),直到我達到我的目標(無所謂),而不會丟失我的第一個節點。我也試過簡單的'開始',但它沒有工作,'&(*開始)'工作,所以我沒有改變。 – Kalec 2012-04-02 17:38:16