私はデータ構造の初心者です。リンクされたリストの先頭に新しいノードを挿入しようとしました。しかし、ノードはまったく挿入されていません。この問題は最初の挿入時にのみ発生します。 ここ 私を助けてください私のコードは、事前リンクリストの先頭に挿入
答えて
まずにおける
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
に直接新しい値を割り当てる必要があります。
- あなたはLinkedListの実装の複数のインスタンスが必要です:メソッド
insertBegin
とdisplay
は非静的であることを- 変更を
あなたのユースケースに応じて、3つのソリューションがあります。
- :彼らは今、あなただけのLinkedListの実装の1つのインスタンス(ない本当に良い解決策)が必要
- クラスの変数
head
にアクセスできるよう - は、メソッドの最初のパラメータを削除します彼らは今、クラスの変数
head
にアクセスできるようstatic
- は、メソッドの最初のパラメータを削除し、クラス内のあなたの頭の変数を作成します
- 変更を
- あなたが(何らかの理由で)変数/メソッドの静的/非静的パターン保存しておきたい:
- 変更を
head
変数の振る舞い:それは今、実際のデータを格納することはありませんが、代わりに実際に保存します頭(データ付き)はnextNode
という変数になります。 display
は今、常にhead.nextValue
insertBegin
から始まるが、今実際のヘッド変数を上書きする必要はありません読み込みます。それだけであなたがしたい場合、私はそれらの例1のためにあなたの例を与えることができ、新しいヘッドに
- 変更を
をそのnextNode
変数を設定する必要があります。私はちょうどそれらすべてを書き留めて、あなた自身のものを把握させたくありませんでした。
あなたのJavaのスキルを向上させたい場合は、私はまた、あなたが様々な可視性(プライベート、保護、公共、デフォルト)変数やメソッドのオプションを検討することをお勧め
あなたのコードはたくさん持っていますエラーのこれはリンクされたリストを書く方法ではありません。 @MichaelRitterの答えを参照して修正してください。
、singlylinkedlist
クラス非静的ですべての機能を確認しsinglylinkedlist
クラス外link
クラスを移動し、singlylinkedlist
クラス外の別のクラスでmain()
メソッドを記述します。
あなたのinsertbegin()
メソッドに関する限り、まず非静的にする必要があります。また、最初に挿入する関数のパラメータの整数値のみを受け入れる必要があります。リンクされたリストの先頭ノードを取ることはここでは役に立たない。さらに、リンクされたリストのヘッドノードが何かをする前にnull
であるかどうかをチェックする必要があります。そうしないと、NullPointerException
が返されます。
public void insertbegin(int x){
link temp = new link(x);
if(head == null)
head = temp;
else{
link ts = head;
head = temp;
head.nextNode = ts;
}
}
あなたはlink
と呼ばれるsinglylinkedlistの初めに1
を挿入したい場合は、あなたにinsertbegin()
関数を呼び出すことができます。ここでは
singlylinkedlist
クラスの
insertbegin()
メソッドの作業バージョンです
link.insertbegin(1);
私はこれが役立つことを願っています。
内部クラスは実際には問題ありません。私はそれをプライベートthoにする(linkedlistクラスの外側のno1はノードを見ることができるはずです) –
- 1. C++でのデータ構造。リンクリストのノードの先頭に挿入
- 2. リンクリストの先頭にノードを挿入する
- 3. 単一リンクリストの先頭にノードを挿入する
- 4. リンクリストの先頭に項目を挿入する - python
- 5. リストの先頭に挿入
- 6. QAbstactTableModel先頭に挿入
- 7. リンクリストの先頭に追加
- 8. sqlの行の先頭に挿入
- 9. リンク先の先頭に新しいノードを挿入
- 10. リンクリストに挿入
- 11. 入れ子リストの先頭にリストを挿入
- 12. 二重リンクリストの先頭と末尾に挿入 - 最後のテールアイテムのみを出力します
- 13. Python Tkinter - テキストボックスの先頭にテキストを挿入するには?
- 14. リンクリストの先頭に新しいノードを挿入するとエラーが発生する
- 15. SQLの文字列の先頭に文字を挿入
- 16. クラスの各メソッドの先頭にコードを挿入
- 17. tinymce.selection.setContentは、IEのテキストエリアの先頭にテキストを挿入します
- 18. iはページ の先頭にカスタムJavaScriptを挿入したいHTMLDocumentClass
- 19. テキストファイルの先頭にコンテンツを挿入する方法は?
- 20. Mono.Cecil:メソッドの先頭にlogステートメントを挿入
- 21. vim:ブロックの先頭に挿入しないでください。
- 22. PHPを使用してhtmlページの先頭に挿入
- 23. リストの先頭にノードを挿入する
- 24. ファイルの先頭に改行が挿入されています
- 25. javacスクリプトでSVGを文書の先頭に挿入します。
- 26. 再帰 - リストの先頭と末尾に値を挿入
- 27. angular 2新しいテーブル項目をテーブルの先頭に挿入
- 28. 配列の先頭に整数を挿入するMIPS
- 29. リンクリストcstring挿入ソート
- 30. 先頭への挿入と削除の効率的な収集
ホイールを作り直しているので(英語でもこれが英語であるのかどうかわかりません)、これは宿題だと思います。だから少なくとも、そのコードで何が起こっているのかを説明する必要があります。 PS:ようこそ、あなたは正しく挿入されていないと言いますが、何が問題なのかは言わないでください。[ask] – AxelH
より具体的には、投稿を更新してください。 – Aaron
Tomは混乱を避け、同じ名前のクラスとインスタンスを持っているので、 'singlylinkedlist link'の' link'の名前を変更します。 –