Jag har fått en skoluppgift som går ut på att göra ett litet, enkelt javaprogram. Uppgiften lyder som följande:
Skapa en klass List för att implementera en sorterad länkad heltalslista. Man ska kunna lägga till
element till listan, ta bort element ur listan och söka efter element i listan. Dessutom ska man kunna
skriva ut listan. Det är inte tillåtet att använda Javas listklasser.
Ledning: Ett element i en länkad lista har två attribut: ett element (dvs ett heltal) och “nästa element
i listan”. Det behövs två klasser, en för listhuvudet och en för listelement.
Jag har inte haft möjlighet att gå på tillhörande föreläsningar så jag är lite bakom flötet. Dock har jag lyckats fiffla ihop detta:
class Quick { // Quick.java heter filen som börjar här.
static int[] tab; // Internt namn på vektorn som ska sorteras.
public static void Sort(int[] v) { // Sort anropas utifrån, därför public.
tab = v;
Quicksort(0,tab.length-1); // Första och sista index.
}
static int Partition(int a, int b) { // Partitionerar det segment av vektorn tab
int x; // som går från tab[a] till tab
**x = tab[a]; // med x som partitioneringsvärde.
while (a < b) {
while (tab >= x && a < b) b--; // Sök från höger efter element mindre än x.
if (a == b) break;
tab[a++] = tab; // Flytta till ledig plats i vänsterdelen.
while (tab[a] <= x && a < b) a++; // Sök från vänster efter element större än x.
if (a == b) break;
tab[b--] = tab[a]; // Flytta till ledig plats i högerdelen.
}
tab = x; // Stoppa tillbaka partitioneringselementet
return b; // och returnera var det hamnade.
}
static void Quicksort(int a, int b) { // Sorterar segmentet tab[a]...tab.
int split = Partition(a, b); // Partitionera, kalla delningsindex split.
if (split > a+1) Quicksort(a, split-1); // Sortera vänstra delen rekursivt
if (split < b-1) Quicksort(split+1, b); // Sortera högra delen rekursivt
}
} // Här slutar filen Quick.java// Här slutar Exempel.java.import java.io.*; // Exempel.java kan använda
class Exempel { // hela paketet java.io
public static void main (String[] args) throws IOException {
DataInputStream input = new DataInputStream(System.in); // Låt input vara tangenterna.
System.out.println("Antal tal:");
int n = Integer.parseInt(input.readLine());
int[] v = new int[n]; // En array skapas dynamiskt.
System.out.println("Skriv ett tal per rad:");
for (int i=0; i<n; i++)
v = Integer.parseInt(input.readLine()); // Raden görs om till heltal.
Quick.Sort(v); // Utför sorteringen.
System.out.println("Sorterat:");
for (int i = 0; i<n; i++) System.out.println(v); // Skriv ut resultatet.
}
}************
Det lilla jag skrivit frågar efter hur många tal/ord jag vill att listan skall bestå av, vilka tal/ord den skall bestå av och sedan skriver ut detta. Ser detta bra ut? Hur skall jag nu fortsätta med resten av uppgiften (sökfunktionen, deletefunktionen). Tror ni jag har förstått uppgiften rätt?? jag är inte säker...
Tack!!