我試圖用關鍵字(優先級編號,int編號)從高到低排序鏈接列表,用文本文件中的數據排序。我正在插入物品並對其進行分類。 這是我的文本文件。鏈接列表,從文本文件中讀取,並按鍵排序
Myjob 66
垃圾17
玩轉25
重要96
命門99
MoreFun 28
工作69
分配44
這裏是我的鏈表類
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
@SuppressWarnings("unused")
public class LinkedList {
Node head;
Node prev;
Node cur;
Node node;
public LinkedList(){
}
public LinkedList(Node head){
head = null;
}
//getter to get head
public Node gethead(){
return head;
}
//insert method
public void insert(Data dt){
try {
if(head==null){
head = new Node(dt.getData(), null);
System.out.println("Opps");
}
else if (dt.getData().num > head.dt.num){
head = new Node(dt.getData(),head);
System.out.println("Was Here");}
else if (head.getNext()==null){
head.setNext(new Node(dt.getData(),null));
}
else{
cur = head.getNext();
for(prev = head;cur!= null;cur=cur.getNext()){
if(cur.dt.num>prev.dt.num){
Node temp = new Node(dt.getData(),cur);
prev.setNext(temp);
break;
}
else{
prev=cur;
}
}
}
}
catch (NullPointerException e){
System.out.println("Here is Error");
}
}
//Running Linked list
public static void main(String[] args) throws FileNotFoundException{
LinkedList l1 = new LinkedList();
Data dt = new Data();
l1.insert(dt);
}
}
下面是我的節點類:
public class Node {
Data dt;
Node next;
public Node(Data dt, Node next){
this.dt=dt;
this.next=next;
}
public Node getNext(){
return next;
}
public void setNext(Node next){
this.next=next;
}
public Data getData(){
return dt.getData();
}
}
這裏是我的數據類:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Data {
protected String name;
protected int num;
public Data(){
}
public Data(String name,int num){
this.name=name;
this.num=num;
}
//getter to get Data
@SuppressWarnings("unused")
public Data getData(){
try{
int count =0;
File x = new File("Asg2Data.txt");
Scanner sc = new Scanner(x);
while (sc.hasNext()){
String name = sc.next();
int num = sc.nextInt();
Data data= new Data(name,num);
System.out.println("Name = "+ name+" "+"Priority = "+num);
System.out.println(" ");
count++;
}
System.out.println("Total Objects: "+count);
sc.close();
}catch(FileNotFoundException e){
System.out.println("Error");
}
return this;
}
//Compare Function
// public int compare(Data dt){
// if (this.getData().num > dt.getData().num)
// return 1;
// else if (this.getData().num < dt.getData().num)
// return -1;
// else
// return 0;
// }
// Testing: Worked !!!!!
public static void main(String[] args){
Data d1 = new Data();
d1.getData();
}
}
我目前輸出,當我從鏈表類運行:
Name = Myjob Priority = 66
Name = Junk Priority = 17
Name = Fun Priority = 25
Name = Important Priority = 96
Name = Vital Priority = 99
Name = MoreFun Priority = 28
Name = Work Priority = 69
Name = Assignment Priority = 44
Total Objects: 8
Opps
我的插入方法總是停在第一個if語句,永遠保持下去。我不知道如何解決它。同時,它不能執行插入數據並按優先級從高到低排序它們。誰能幫我 ?我是Java的超級新手。非常感謝。
-Dustin
你的建議太棒了。我只是修復我的代碼。現在它運作良好。現在我仍然在分揀部分。我在做插入排序。我的代碼就在 –
以下你的建議太棒了。我只是修復我的代碼。現在它運作良好。現在我仍然在分揀部分。我在做插入排序。我的代碼就在@ utkarsh31下面 –