0

リンク リスト クラスから remove() を使用せずに、リンク リストから最小の要素を削除するアルゴリズムは何ですか。これは、最小のデータを見つけるために必要なものです。私は Linkedlist クラスを作成しているので、これを行うために既に存在するメソッドを使用したくありません。

public void removeSmallest(){
    Node smallest=new Node(); 
    Node temp=head;
    Node prev=null;
    while(temp!=null){
        if(temp.next.data<temp.data && temp.next!=null){
            smallest.data=temp.next.data;
        }
    }



}
4

3 に答える 3

6
public Node removeSmallest() {
   Node smallest = head; 
   Node temp = head;
   Node prev = null;

   while(temp != null) {
      if(temp.next != null && temp.next.data < smallest.data){
        smallest = temp.next;
        prev = temp;
      }
     temp = temp.next;
   }

   if(smallest != head) { //First element is not min
      prev.next = smallest.next;
   } else {
       head = head.next; //If first element is smallest, update the head
   }
   
   return head;
}
于 2013-10-17T05:39:17.647 に答える
0

私は Java 構文に少し慣れていませんが、コードを拡張すると、次のようになると思います。

public void removeSmallest() {
    Node smallest = head; 
    Node temp = head;
    Node prev = null;

    while(temp != null) {
        if(temp.next != null && temp.next.data < smallest.data){
            smallest = temp.next;
            prev = temp;
        }
        temp = temp.next;
    }

    prev.next = smallest.next;
}
于 2013-10-17T05:07:11.560 に答える