下面是鏈表列表程序,我試圖通過k-節點來反轉鏈表。 k是用戶提供的輸入。但問題在於,邏輯僅以相反的順序返回前三個節點。爲什麼反轉我的鏈表不能按預期工作?
package p;
import java.util.Scanner;
public class LinkedListDemoReverseKNode {
class MyList {
public int info;
public MyList link;
public MyList(){
this.link = null;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
MyList s = new MyList();
System.out.println("enter value :");
s.info = sc.nextInt();
Character ch = null;
MyList t = s;
MyList commonNode = null;
while (true) {
System.out.println("to create node press Y else N ");
ch = sc.next().charAt(0);
if (ch == 'n' || ch == 'N') {
break;
}
s.link = new MyList();
System.out.println("enter value for the node :");
s.link.info = sc.nextInt();
s = s.link;
}
// Reverse the linked list k-node :
s = t;
LinkedListDemoReverseKNode linkedListDemo3 = new LinkedListDemoReverseKNode();
MyList head = linkedListDemo3.reverseLinkedListKNode(s, 3);
while (head != null) {
System.out.println("info :: " + head.info);
head = head.link;
}
}
private MyList reverseLinkedListKNode(MyList head, int k) {
MyList s = head;
MyList prev = null;
MyList next = null;
int count = 0;
while (count < k && s != null) {
next = s.link;
s.link = prev;
prev = s;
s = next;
count++;
}
if (next != null)
s.link = reverseLinkedListKNode(next, k);
return prev;
}
}
您的帖子的標題是迄今爲止最重要的決定,您將使:) –
這可能是因爲您傳遞3來反轉LinkedListKNode(MyList head,int k) – Amal