这就是我试过的......
这只交换第一个链接...我怎么解决这个问题来整理整个链表????
linkedlist类
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);
}
}
有谁可以帮助我? .................................................. ...............................
答案 0 :(得分:2)
此示例提供了如何使用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;
}
}