リンクリストの先頭への挿入

大豆

私はデータ構造の初心者です。リンクリストの先頭に新しいノードを挿入しようとしました。しかし、ノードはまったく挿入されていません。問題は最初の挿入でのみ発生します。私を助けてくださいここに私のコードがあります

public class singlylinkedlist {
link head;
static class link
{
    int data;
    link nextNode;
    link(int dat)
    {
        data=dat;
        nextNode=null;
    }
}
public static void insertbegin(link head,int x)
{
    link newnode=new link(x);
    newnode.nextNode=head;
    head=newnode;
}
static void display(link head)
{
    if(head==null) System.out.println("empty list");
    else
    {
        link temp=head;
        while(temp!=null)
        {
            System.out.println(temp.data);
            temp=temp.nextNode;
        }
    }
}
public static void main(String args[])
{
    singlylinkedlist link=new singlylinkedlist();
    link.head=new link(2);
    insertbegin(link.head,1);
    display(link.head);
    }
}

前もって感謝します

マイケルリッター

まず、クラスの名前を変更することを強くお勧めします。Javaクラスは、常に大文字で始める必要があります(大文字のキャメルケース)。また、変数とメソッドは常に小文字にする必要があります(例外:静的最終変数はすべて大文字であることがよくあります)。

ここであなたの質問に:あなたのエラーは以下にあります:あなたのメソッドの中で、あなたがメソッドにhead与えられ変数に新しい値を割り当てるならば、その変更headはメソッドに与えられた変数にのみ影響します(メソッドスコープでのみ) 。実際のhead変数を変更する場合は、新しい値をクラスhead変数に直接割り当てる必要があります。

ユースケースに応じて、3つの解決策があります。

  1. LinkedList実装の複数のインスタンスが必要です。
    • メソッドinsertBegin変更し、display非静的にします。
    • メソッドheadがクラスの変数アクセスできるようになったため、メソッドの最初のパラメーターを削除します
  2. LinkedList実装のインスタンスは1つだけ必要です(実際には良いソリューションではありません)。
    • クラス内で頭を可変にする static
    • メソッドheadがクラスの変数アクセスできるようになったため、メソッドの最初のパラメーターを削除します
  3. 変数/メソッドの静的/非静的パターンを維持したい(何らかの理由で):
    • head変数の動作を変更します。実際のデータを保存することはなく、代わりに実際のヘッド(データを含む)をnextNode変数として保存します。
    • display 今は常にから始まる head.nextValue
    • insertBeginこれで、実際のヘッド変数を上書きする必要がなくなりました。nextNode変数を新しいヘッドに設定するだけです

必要に応じて、そのようなケースの1つの例を示します。私はそれらをすべて書き留めて、自分で何かを理解させたくありませんでした。


Javaスキルを向上させたい場合は、変数とメソッド(private、protected、public、default)のさまざまな可視性オプションを調べることもお勧めします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リンクリストの先頭に挿入しますか?

分類Dev

リンクリストの先頭にノードを挿入

分類Dev

単一リンクリストの先頭にノードを挿入する

分類Dev

リンクリストへの挿入

分類Dev

リンクリストの先頭へのノードの挿入について(プログラムが正常に実行されていない)

分類Dev

dartのリストの先頭に要素を挿入します

分類Dev

リンクリストの先頭にノードを挿入できません

分類Dev

リンクリストの先頭に文字列を挿入中にエラーが発生しました

分類Dev

リストの先頭にノードを挿入します

分類Dev

リンクリストへのノードの挿入

分類Dev

Cのデータ構造-リストの先頭にノードを挿入

分類Dev

リンクリストの先頭に挿入中にメモリの読み取り中にエラーが発生しました

分類Dev

リンクリストへの挿入について

分類Dev

リンクリストへの挿入について混乱

分類Dev

単純な単一リンクリストへの挿入

分類Dev

マテリアルテキストフィールドの先頭にアイコンを挿入する方法

分類Dev

リンクリストの先頭に追加

分類Dev

リンクリストの先頭から削除する

分類Dev

Angular 8のアップグレード後、AngularスクリプトはHTMLドキュメントの先頭に挿入されます

分類Dev

リンクリストの挿入/削除

分類Dev

リストの先頭に追加するcのリンクリスト

分類Dev

特定の位置での単一リンクリストへの挿入

分類Dev

リンクリストへの構造体の挿入は、3回の挿入後にハングします

分類Dev

二重リンクリストC、特定の位置への挿入

分類Dev

先頭の空白を含む正規表現へのリスト

分類Dev

CKEditorへのリンクの挿入

分類Dev

シェルスクリプトを使用して、テキストファイルの各行の先頭にテキストを挿入する

分類Dev

cassandrapythonへのリストの挿入

分類Dev

ヘッドがnullであるリンクリストへの挿入

Related 関連記事

  1. 1

    リンクリストの先頭に挿入しますか?

  2. 2

    リンクリストの先頭にノードを挿入

  3. 3

    単一リンクリストの先頭にノードを挿入する

  4. 4

    リンクリストへの挿入

  5. 5

    リンクリストの先頭へのノードの挿入について(プログラムが正常に実行されていない)

  6. 6

    dartのリストの先頭に要素を挿入します

  7. 7

    リンクリストの先頭にノードを挿入できません

  8. 8

    リンクリストの先頭に文字列を挿入中にエラーが発生しました

  9. 9

    リストの先頭にノードを挿入します

  10. 10

    リンクリストへのノードの挿入

  11. 11

    Cのデータ構造-リストの先頭にノードを挿入

  12. 12

    リンクリストの先頭に挿入中にメモリの読み取り中にエラーが発生しました

  13. 13

    リンクリストへの挿入について

  14. 14

    リンクリストへの挿入について混乱

  15. 15

    単純な単一リンクリストへの挿入

  16. 16

    マテリアルテキストフィールドの先頭にアイコンを挿入する方法

  17. 17

    リンクリストの先頭に追加

  18. 18

    リンクリストの先頭から削除する

  19. 19

    Angular 8のアップグレード後、AngularスクリプトはHTMLドキュメントの先頭に挿入されます

  20. 20

    リンクリストの挿入/削除

  21. 21

    リストの先頭に追加するcのリンクリスト

  22. 22

    特定の位置での単一リンクリストへの挿入

  23. 23

    リンクリストへの構造体の挿入は、3回の挿入後にハングします

  24. 24

    二重リンクリストC、特定の位置への挿入

  25. 25

    先頭の空白を含む正規表現へのリスト

  26. 26

    CKEditorへのリンクの挿入

  27. 27

    シェルスクリプトを使用して、テキストファイルの各行の先頭にテキストを挿入する

  28. 28

    cassandrapythonへのリストの挿入

  29. 29

    ヘッドがnullであるリンクリストへの挿入

ホットタグ

アーカイブ