Liste als Array realisieren

01/16/2013 20:06 Laymi#1
Hallo,

ich habe mal eine Frage bzgl. der Datenstruktur "Liste".
Ich möchte eine Liste als Array programmieren(also OHNE ArrayList) und soll dabei eine Struktur verwenden, inder es quasi zwei Spalten gibt:
- Inhalt
- Use Liste(Ein "Zeiger" auf das nächste Element)
- eine Start Variable auf das erste Element

Ich simuliere das ganze mal mit einer Länge von 4.
Code:
0 -1
0 -1
0 -1
0 -1
start=-1
 
-> add(3);
3 -1
0 -1
0 -1
0 -1
start = 0;
 
-> add(1);
3 -1
1  0
0 -1
0 -1
start = 1;
 
-> add(5);
3  2
1  0
5 -1
0 -1
start = 1;
Wichtig wäre halt die USE Spalte :x
Das ganze soll sich nach jedem add() updaten um die neuen nächsten Elemente zu bestimmen.
Hat mal jemand was in der Art gemacht oder hat eine Idee how to do?

mfG
01/16/2013 20:14 Obilee#2
Sprache ?

Ansonsten eine Klasse Array erstellen welches ein normales Array der größe 1 besitzt und jedes mal wenn etwas geadded werden soll ein neues Array erstellt wird welches um 1 größer gemacht wird, alle alten Werte übernimmt und zusätzlich dass neue speichert.
01/16/2013 20:16 Laymi#3
Sprache Java, sorry :D
Ich versuche das mal umzusetzen.
01/17/2013 11:57 MrSm!th#4
Quote:
Originally Posted by Obilee View Post
Sprache ?

Ansonsten eine Klasse Array erstellen welches ein normales Array der größe 1 besitzt und jedes mal wenn etwas geadded werden soll ein neues Array erstellt wird welches um 1 größer gemacht wird, alle alten Werte übernimmt und zusätzlich dass neue speichert.
Zeiger auf das nächste Element, Zeiger auf das erste Element?
Klingt eher nach ner linked List.
01/17/2013 16:46 Obilee#5
Quote:
Originally Posted by MrSm!th View Post
Zeiger auf das nächste Element, Zeiger auf das erste Element?
Klingt eher nach ner linked List.
Nö, bei mir zeigt die klasse ja auf gar nichts. Habs mit absicht so beschrieben damit keine linkedlist rauskommt ( was er ja anscheinend nicht machen soll )

class bla
int size = 1;
int[] arr = new array[size];

put(int i) {
tmparr = arr;
size++;
arr = new array[size];
// alle tmparr werte in arr reinschreiben
arr[size-1] = i;
}

int get(int index) {
return arr[index];
}

ganz simple und uneffizient :P