メソッド「insertAscending」は、新しい番号を入力した後でも、最初の番号しか表示しません。誰かが私が間違っていることを手伝ってくれる?ありがとう。
public class LinkedList13 {//プライベート内部クラスノード
private class Node{
int data;
Node link;
public Node(){
data = Integer.MIN_VALUE;
link = null;
}
public Node(int x, Node p){
data = x;
link = p;
}
}
// End of Node class
public Node head;
public LinkedList13(){
head = null;
}
public void insertAscending(int data){
Node node = new Node();
node.data = data;
if (head == null)
head = node;
Node p = head;
while (p.link != null)
{
if (p.link.data > data)
{ node.link = p.link;
p.link = node;
break;
}
p= p.link;
}
}
}
まず、リストの先頭を設定した後(最初の要素が追加されたとき)に戻る必要があります。
次に、新しく挿入されたノードがリスト内で最小である場合を処理する必要があります(したがって、最初に来る必要があります)。ループは、追加されたノードをリストの先頭と比較することはありません。
最後に、追加された要素がwhileループに挿入されていない場合は、whileループの後に挿入する必要があります。
public void insertAscending(int data)
{
Node node = new Node();
node.data = data;
if (head == null) {
head = node;
return;
} else if (node.data < head.data) {
node.link = head;
head = node;
return;
}
Node p = head;
boolean added=false;
while (p.link != null)
{
if (p.link.data > data)
{
node.link = p.link;
p.link = node;
added = true;
break;
}
p = p.link;
}
if (!added)
p.link = node;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加