2012-08-31 84 views
1

可以說我有一個包含以下內容的鏈接列表:「之前插入」 爲標準::名單

1,2,4,5,6,2,3,2

現在可以說,我希望將此轉換爲:

1,10,2,4,5,6,10,2,3,10,2

即之前的所有2的刀片10。

我該怎麼做?

+0

'std :: list'? ... – nullpotent

+0

'std :: list <> :: insert()'有什麼問題? – tenfour

+0

@iccthedral http://www.cplusplus.com/reference/stl/list/ – Baz

回答

6

把我的頭

for (std::list<int>::iterator i = l.begin(); i != l.end(); ++i) 
    if (*i == 2) 
    l.insert(i, 10); 

夠簡單的頂部。您不必擔心迭代器失效,因爲std::list上的insert不會使任何迭代器失效。這是使用std::list的優勢之一。

1

也許是這樣的:

auto it = l.begin(); 
while ((it = std::find(it, l.end(), 2)) != l.end()) 
{ 
    it = l.insert(it, 10); 
    std::advance(it, 2); 
} 
+1

對不起,我喜歡''的宣言,但我正在爲'for for循環投票。 –

+0

@SteveJessop其實,我也會...... :) –

-1
while(item != NULL) 
{ 
if(item->intval == 2) 
{ 
Item *newitem = (Item *) malloc(sizeof(Item)); 
newitem->intval = 10; 
prev->next = newitem; 
newitem->next = item; 
} 
prev = item; 
item = item->next; 
} 

如果你做你自己的鏈表。 也關閉我的頭頂,和C風格。

+0

這不是C++(或C),他說他使用'std :: list'。 – tenfour

+0

沒讀過,他還在使用std :: list,關於這段代碼的C不是什麼? – Minion91

+0

@ Minion91:非C關於它的東西包括錯別字'而{'和'MULL',使用'new',Java樣式的'Item'作爲列表節點的類型和變量的類型該類指向一個列表節點,使用關鍵字「int」作爲結構成員的名字。 –

1

創建節點和信息的結構像

struct test{ 

int info; 
int *node; 

} 

你可以參考他們的測試 - >信息和測試 - >節點

現在嘗試這樣的事情。

while(end_of_list){ 

list[index]=2; 

create a new structure object(new_struct) . 

new_struct->info=10; 
new_struct->node=node_containing_2. 

previous_node_to_2->node=new_struct. 

}