以下を含むリンクリストがあるとしましょう:
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);
十分に単純です。insert
on aはイテレータを無効にしないため、イテレータの無効化について心配する必要はありstd::list
ません。を使うメリットの一つです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);
}
次のようなノードと情報で構造を作成します
struct test{
int info;
int *node;
}
それらを test->info および test->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.
}
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スタイル。