[英]how can i sort a linked list in ascending order
這就是我嘗試過的
這僅交換第一個鏈接...我如何解決此問題以對整個鏈接列表進行排序?
鏈表類
public class LinkedList {
private Link first;
public void LinkList() {
first = null;
}public Link find(int key) {
Link current = first;
while (current.iData != key) {
if (current.next == null) {
return null;
} else {
current = current.next;
}
}
return current;
}
public void insertFirst(int idata, String sdata) {
Link nl1 = new Link(idata, sdata);
nl1.next = first;
first = nl1;
}
public Link deleteFirst() {
Link temp = first;
first = first.next;
return temp;
}
public void displayList() {
System.out.println("List : ");
Link current = first;
while (current != null) {
current.displayLink();
current = current.next;
}
System.out.println("");
}
public Link delete(int key) {
Link current = first;
Link previous = first;
while (current.iData != key) {
if (current.next == null) {
return null;
} else {
previous = current;
current = current.next;
}
}
if (current == first) {
first = first.next;
} else {
previous.next = current.next;
}
return current;
}
public void insertmidl(int key, int idata, String sdata) {
Link nl = new Link(2, "name2");
Link current = first;
Link previous = first;
while (current.iData != key) {
if (current.next == null)
{
System.out.println("");
} else {
previous = current;
current = current.next;
}
}
if (current == first) {
nl.next = current.next;
current.next = nl;
}
previous.next = nl;
nl.next = current;
}
public void update(int key, int i, String n) {
Link tobeupdated = find(key);
tobeupdated.iData = i;
tobeupdated.sData = n;
}
public void sort(){
Link current = first;
if(current.iData > current.next.iData) {
Link temp = current.next;
current.next = current.next.next;
temp.next = current;
first = temp;
}
}
鏈接類
public class Link {
public int iData;
public String sData;
public Link next;
public Link(int id,String sd)
{
iData =id;
sData =sd;
next = null;
}
public void displayLink()
{
System.out.println(iData+""+sData);
}
}
有誰可以幫助我嗎? .................................................. ...............................
本示例為您提供如何使用Comparator對LinkedList進行排序。 LinkedList包含用戶定義的對象。 通過使用Collections.sort()方法,可以對LinkedList進行排序。 您必須傳遞包含排序邏輯的Comparator對象。 該示例根據最高薪水對Empl對象進行排序。
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
public class MyLinkedListSort {
public static void main(String a[]){
LinkedList<Empl> list = new LinkedList<Empl>();
list.add(new Empl("Ram",3000));
list.add(new Empl("John",6000));
list.add(new Empl("Crish",2000));
list.add(new Empl("Tom",2400));
Collections.sort(list,new MySalaryComp());
System.out.println("Sorted list entries: ");
for(Empl e:list){
System.out.println(e);
}
}
}
class MySalaryComp implements Comparator<Empl>{
@Override
public int compare(Empl e1, Empl e2) {
if(e1.getSalary() < e2.getSalary()){
return 1;
} else {
return -1;
}
}
}
class Empl{
private String name;
private int salary;
public Empl(String n, int s){
this.name = n;
this.salary = s;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public String toString(){
return "Name: "+this.name+"-- Salary: "+this.salary;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.