可以說我有一個包含以下內容的鏈接列表:「之前插入」 爲標準::名單
1,2,4,5,6,2,3,2
現在可以說,我希望將此轉換爲:
1,10,2,4,5,6,10,2,3,10,2
即之前的所有2的刀片10。
我該怎麼做?
可以說我有一個包含以下內容的鏈接列表:「之前插入」 爲標準::名單
1,2,4,5,6,2,3,2
現在可以說,我希望將此轉換爲:
1,10,2,4,5,6,10,2,3,10,2
即之前的所有2的刀片10。
我該怎麼做?
把我的頭
for (std::list<int>::iterator i = l.begin(); i != l.end(); ++i)
if (*i == 2)
l.insert(i, 10);
夠簡單的頂部。您不必擔心迭代器失效,因爲std::list
上的insert
不會使任何迭代器失效。這是使用std::list
的優勢之一。
也許是這樣的:
auto it = l.begin();
while ((it = std::find(it, l.end(), 2)) != l.end())
{
it = l.insert(it, 10);
std::advance(it, 2);
}
對不起,我喜歡'
@SteveJessop其實,我也會...... :) –
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風格。
創建節點和信息的結構像
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.
}
'std :: list'? ... – nullpotent
'std :: list <> :: insert()'有什麼問題? – tenfour
@iccthedral http://www.cplusplus.com/reference/stl/list/ – Baz