Reputation: 83
this is what I tried...
this only swap the first link...how can i solve this to sort the entire linked list????
linkedlist class
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;
}
}
link class
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);
}
}
is there anyone who can help me?? .................................................................................
Upvotes: 1
Views: 5456
Reputation: 988
This example gives you how to sort an LinkedList using Comparator. The LinkedList contains user defined objects. By using Collections.sort() method you can sort the LinkedList. You have to pass Comparator object which contains your sort logic. The example sorts the Empl objects based on highest salary.
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;
}
}
Upvotes: 2