3

単方向リストの末尾に一定時間で追加するメソッドを書こうとしています。リストの最後のノードにポインターを一定時間で割り当てる方法がわかりません。このメソッドは 0(n) で実行されます。

public void insertEnd(Object obj) {
if (head == null) {
  head = new SListNode(obj);
} else {
  SListNode node = head;
  while (node.next != null) {
    node = node.next;
  }
  node.next = new SListNode(obj);
}
size++;
}

これは私の新しい方法の始まりです:

public void addLast(SListNode obj){
  //if the list is empty, the new element is head and tail
  if(tail == null){  
      obj.next = null;
      head = tail = obj;
  }else{   -----> here I'm confused 

  }
}

これは私の SList クラスです:

public class SList {
   private SListNode head;
   private SListNode tail;
   private int size;

   public SList() {
   size = 0;
   head = null;
   tail = null;

}
4

2 に答える 2

1

リストの先頭または末尾に挿入できる両端キューを実装する必要があります

List が空の場合、要素が 1 つ含まれている場合、head と tail の両方が null になりますhead == tail

public void addLast(SListNode obj){
//if the list is empty, the new element is head and tail
if(tail == null){  
  obj.next = null;
  head = tail = obj;
}else{   -----> here I'm confused 
  tail.next = obj;
  tail = obj;
}
于 2013-05-17T15:02:16.493 に答える