2017-12-30 45 views
-1

こんにちはリンクは、私は、これは間違って何かが私のコードですが、最初のノードへの最後のノードと最後のノードへの最初のノードを置き換える</p> <p>たいがリスト

public void replaceNode() { 

    Node firstNode = head.next; 
    Node lastNode = null; 

    location = head; 
    while (head != null) { 
     location = location.next; 
     predLocation = location; 
     lastNode = location; 
    } 

    head.next = lastNode; 
    lastNode.next = head.next.next; 

    firstNode.next = null; 
    predLocation.next = firstNode; 

} 
+1

ご参照ください:[なぜ「誰かが私を助けることはできますか?」されていない実際の質問?](http://meta.stackoverflow.com/q/284236)[デバッグ助けを求める質問(*「なぜISNをこのコードは動作していますか?*)には、目的の動作、特定の問題またはエラー、および質問自体の中でそれを再現するのに必要な最短コードが含まれていなければなりません。 (https://stackoverflow.com/help/on-topic)参照:[最小限で完全で検証可能なサンプルを作成する方法](https:// stackoverflow .com/help/mcve)。 – Turing85

答えて

0

import java.util.Scanner; 

public class swapHeadTail{ 

static llistNode insert(llistNode H,int data){ 
    llistNode tmp = new llistNode(); 
    tmp.data=data; 
    tmp.next=null; 
    if(H==null) 
     return tmp; 
    llistNode curr = new llistNode(); 
    curr = H; 
    while(curr.next != null) 
     curr = curr.next; 
    curr.next = tmp; 
    return H; 
} 

public static void main(String[] args) { 
    llistNode H = new llistNode(); 
    Scanner in = new Scanner(System.in); 
    llistNode tmp =new llistNode(); 

    H=null; 
    do{ 
     System.out.print("Enter data:"); 
     H=insert(H,in.nextInt()); 
     System.out.print("Enter 1 to continue: "); 
    }while (in.nextInt()==1); 

    tmp = H; 
    while(tmp != null){ 
     System.out.print(tmp.data+"\t"); 
     tmp = tmp.next; 
    } 
    System.out.println(); 

    llistNode head = new llistNode(); 
    llistNode headNext = new llistNode(); 
    llistNode tailPrev = new llistNode(); 
    llistNode tail = new llistNode(); 

    head = H; 
    headNext = H.next; 
    tailPrev = H; 
    while(tailPrev.next.next != null) 
     tailPrev=tailPrev.next; 
    tail = tailPrev.next; 
    if ((tailPrev == head)&&(headNext == tail)){ 
     head.next = null; 
     tail.next = head; 
    } 
    else{ 
     tmp = head; 
     tmp.next = null; 
     tailPrev.next = tmp; 
     tail.next=headNext; 
    } 
    H=tail; 
    tmp = H; 
    while(tmp != null){ 
     System.out.print(tmp.data+"\t"); 
     tmp = tmp.next; 
    } 

    } 
} 

を参照。..簡単なコードの下に試してみてください。あなたのことが可能かもしれ不変であるlink.If単にあなたがそこに変更することなく、2つのノード間の値を変更することができますhttp://rawjava.blogspot.in/2015/04/java-program-to-swap-head-and-tail-of.html

+0

コードのみの回答はお勧めしません。いくつかの説明を追加する必要があります。外部リンクについては、将来URLが利用できない場合のためにコンテンツの要約を提供する必要があります。 – Turing85

0

以下のコードを使用してください。

public void replaceNode(ListNode head) { 
      ListNode firstNode = head.next; 
      ListNode tempNode = head; 
      ListNode preLastNode = null; 
      while(tempNode.next !=null) { 
       preLastNode=tempNode; 
       tempNode=tempNode.next; 
      } 
      head.next=preLastNode.next; 
      head.next.next=firstNode.next; 
      preLastNode.next=firstNode; 
      preLastNode.next.next=null; 
     } 
関連する問題