リンクリストの指定した箇所に要素を追加
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
リンクリストでは、リンクリストの先頭に要素を追加する方法を考えました。
次は、リンクリストの途中の指定した箇所へと、要素を追加する方法です。
スポンサーリンク
リンクリストが3つの要素からなり、数が小さいほうから大きいほうへと並んでいるとします。
リンクリスト: 26, 72, 265
このリンクリストに、要素「55」を加えるとすると、リンクリストは、「26, 55, 72, 265」となる必要があります。
55を、26と72の間に入れる必要があるので、これを関数で表すと・・・
void linklist::enter(const std::string& item) { linklist_elem *before_ptr; // 挿入ポイントの前の要素 linklist_elem *after_ptr; // 挿入ポイントの後の要素 // 挿入ポイントの後の要素を、現在の先頭の要素に設定 after_ptr = first_ptr; while (true) { // 要素を一つ進める before_ptr = after_ptr; after_ptr = after_ptr->next_ptr; // リストの終端チェック if (after_ptr == NULL) break; // 挿入ポイントか? if (item >= after_ptr->data) break; } }
上記のコードで、新しい要素を挿入すべき箇所を発見できます。
次に、挿入される要素が、前後の要素を正しくポイントするようにしなければなりません。
// 新しい項目を作成 linklist_elem *new_ptr; new_ptr = new linklist_elem; ner_ptr->data = item; // 1つ前の要素の次が、新しい要素をポイント before_ptr->next_ptr = new_ptr; // 新しい要素の次が、1つ後の要素をポイント new_ptr->next_ptr = after_ptr;
コードは、上記のような感じとなる。
スポンサーリンク
- - 関連記事 -
- ツリー
- 二重リンクリスト
- リンクリスト
- delete演算子
- new演算子でオブジェクト生成
- new演算子・動的メモリの割り当て
- 構造体とポインタ
- 配列のポインタ宣言
- 配列とポインタ・アドレスのインクリメントを確認
- 定数ポインタ
- ポインタとは
スポンサーリンク