Array leer

xyZman

Bekanntes Mitglied
Hi,
Wie kann ich rausfinden ob ein Array der von beiden Seiten mittels Pop Daten entfernt bekommen kann leer ist ? Nach dem Kellerprinzip Lifo hätte ich natürlich einfach this.current-1 gecheckt um zu testen ob mein Array leer ist. Nun hatte ich überlegt zu überprüfen this.current-1 && this.array.length==this.array.length+1.
Lösche ich aber beidseitig jeweils ein Element, dann wäre hierfür ja mein Array leer was ja nicht stimmt. Muss ich hierfür das mittlere Element auf Existenz überprüfen ? und wenn ja wie ?
Es geht um die DoubleEndedque


lg
Flo
 
Zuletzt bearbeitet:

bERt0r

Top Contributor
Also du würfelst hier gewaltigst Begriffe durcheinandern:
Push, Pop: Zugriffsmethoden auf einen Stack
Ein Array hat immer eine fixe größe, du kannst keine Daten aus einem Array "entfernen". Du kannst sie nur überschreiben oder ein neues Array anlegen.
Einen Stack und ein Array sind zwar beide Datenstrukturen, haben sonst aber ungefähr gar nichts gemeinsam. Was versuchst du denn eigentlich zu machen? Was muss deine "DoubleEndedque" können?
 

xyZman

Bekanntes Mitglied
Mein Code bisher. Wobei das mimt Empty noch nicht geklärt ist

Java:
public class Deque {
/*
 * Verweis auf aktuellen Index und lege Array an
 */
	int current;
	int[]store;
	
	/*
	 * Konstruktor mit maximaler größe als Parameter
	 */
	
	Deque(int maxzise){
		this.store=new int[maxzise];
		this.current=-1;
	}
	
	/*
	 * Liefere true wenn Deque leer ist
	 * Es muss zweiseitig überprüft werden
	 */
	
 boolean isEmpty(){
	return this.current==-1 && this.store.length==this.store.length+1 ;
}
 boolean isFull(){
	 return this.current ==(this.store.length-1);
	 
 }
 /*
  * Füge Wert hinten in die Deque ein
  */

 void push(int value){
	this.store[++this.current] = value; 
 }


}
 
G

Gast2

Gast
Hm, du brauchst du mindestens mal zwei "current" pointer. Einen für das vordere Ende und einen für das hintere Ende, oder nicht?
Wenn
Code:
current1 + 1 == current2
gilt, dann ist die Deque leer. Wenn
Code:
current1 == 0
und
Code:
current2 == length - 1
dann ist die Deque an beiden Seiten voll und es können keine weiteren Daten hinzugefügt werden.
Zusätzlich hast du noch die beiden Methoden push() und put() zum hinzufügen von Daten sowie pop() und get() zum entfernen der Daten vom jeweiligen Ende.
 

Landei

Top Contributor
Wenn du von beiden Seiten Werte poppen oder pushen willst, brauchst du natürlich auch zwei Indexe, du anfänglich auf der Mitte des Arrays stehen:

Code:
    vv
[........]

Sind beide indexe eins auseinander, ist das Array leer. Fügt man vorne etwas an, erniedrigt sich der erste Index um eins:
Code:
   v v
[...1....]

Fügt man hinten etwas an, erhöht sich der zweite Index um eins:
Code:
   v  v
[...12...]

Beim Entfernen natürlich umgekehrt. Und "voll" ist eine Seite, wenn der erste Index -1 oder der zweite Index array.length wird.


Trotzdem eine komische Datenstruktur...
 

xyZman

Bekanntes Mitglied
demnach bräuchte ich im Konstruktor also
Java:
current1=this.current=-1; //Anfang
current2=this.current=this.store.length-1;//Ende

?
 

xyZman

Bekanntes Mitglied
Könnte ich den Index dann so festlegen ?
Java:
index1=this.current=(this.store.length-1)/2; //Anfang
index2=this.current=((this.store.length-1)/2)+1;
 
Zuletzt bearbeitet:
G

Gast2

Gast
demnach bräuchte ich im Konstruktor also
Java:
current1=this.current=-1; //Anfang
current2=this.current=this.store.length-1;//Ende

?

Nein, das passt doch überhaupt nicht. du setzt damit current1 auf -1, wie soll das denn passen?

Wenn du nen Array der Länge 11 hast, dann müssen deine Pointer am Anfang auf 5 und 6 zeigen.
Als Anregung (bei ungerader Länge):
Math.floor(länge / 2)
Math.ceil(länge / 2)

Zeichne dir das auf nem Blatt papier auf wie der Anfang ausschaut. Was passiert beim Hinzufügen eines Elements, was passiert beim Löschen, was passiert in der Mitte, was passiert an den Rändern.
 

bERt0r

Top Contributor
Ist es deine Aufgabe, eine Doppeltverkettete Liste mit einem Array darzustellen? Das kommt mir nämlich ziemlich spanisch vor.
 

xyZman

Bekanntes Mitglied
Ich soll eine Klasse Deque schreiben mit einer Datenstruktur ähnlich des Stacks oder einer Schlange. Der Unterschied besteht hier darin ,dass die Daten an beiden Enden gelesen/eingefügt und entfernt werden können.
Um das umzusetzen muss ich ja von der Mitte meines Speichers ausgehen um überhaupt überprüfen zu können ob er z.b leer ist. Nun weis ich grad nicht wie ich mit 2 mittlere Indexe baue.
Ist das machbar ?
Idee war wie vom Landei beschrieben
PHP:
    vv
[........]
Java:
index1=this.current=(this.store.length-1)/2; //Anfang
index2=this.current=((this.store.length-1)/2)+1;
 
G

Gast2

Gast
Ist das machbar ?
Klar, aber du musst verstehen wie die Datenstrunktur funktioniert bevor du die umsetzt.

Java:
index1=this.current=(this.store.length-1)/2; //Anfang
index2=this.current=((this.store.length-1)/2)+1;
Wofür setzt du this.current beide male? Der Wert wird doch beim zweiten Aufruf wieder überschrieben.
 

bERt0r

Top Contributor
Ich weis schon was eine Deque ist, die Realisierung mit Arrays finde ich nur seltsam weil entgegen dem Prinzip der Liste. Besonders für eine Übungsaufgabe.
 

xyZman

Bekanntes Mitglied
laut Wiki muss ich mit einer Doppel verkettete Liste arbeiten oder mit Feldern und Indizes.
Habe allerdings noch keine Vorstellung wie ich vorgehen soll. ADTs wie Schlange,Keller sind mir bekannt. Dies scheint etwas komplizierter..
Hat jemand nen Vorschlag wie ich das in meinen Code bastle ?
Würde gerne mit den Indizes Arbeiten
 

Landei

Top Contributor
Du solltest einfach mit einer doppelt verketteten Liste arbeiten und dir beide Enden merken. Ein Array ist hier wirklich daneben.
 

Landei

Top Contributor
Hier ein Implementierungsvorschlag von mir, wobei ich aus didaktischen Gründen ein paar Zeilen weggelassen habe...

Java:
import java.util.NoSuchElementException;

public class Dequeue<T> {
    private static class Node<T> {
        private Node<T> prev;
        private Node<T> next;
        private final T value;

        public Node(T value, Node<T> prev, Node<T> next) {
            this.prev = prev;
            this.next = next;
            this.value = value;
        }
    }
    private int size = 0;
    private Node<T> first = null;
    private Node<T> last = null;

    public int getSize() {
        return size;
    }

    public boolean isEmpty() {
        return size == 0;
    }

    public void pushFirst(T value) {
        if (isEmpty()) {
            ???
        } else {
           ???
        }
        size++;
    }

    public void pushLast(T value) {
       ???
    }

    public T peekFirst() {
        if (isEmpty()) {
            throw new NoSuchElementException();
        }
        return first.value;
    }

    public T peekLast() {
       ???
    }

    public T popFirst() {
        if (isEmpty()) {
            throw new NoSuchElementException();
        }
        T value = first.value;
        ???
        return value;
    }

    public T popLast() {
       ???
    }
 
}

Nur noch die ??? passend ersetzen. Aufmalen der doppelt verketteten Liste hilft übrigens ungemein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Überprüfen ob String Array leer ist Java Basics - Anfänger-Themen 4
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
D Warum nicht true wenn Array leer ist? Java Basics - Anfänger-Themen 8
Aruetiise Variablen Array ist leer? Java Basics - Anfänger-Themen 6
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
W Erste Schritte Array[0] ist leer ? Java Basics - Anfänger-Themen 4
S Prüfen,ob array leer ist Java Basics - Anfänger-Themen 15
S Array bleibt leer, wo liegt mein Fehler? Verzeichnisinhalt s Java Basics - Anfänger-Themen 8
G Mein Array bleibt immer leer????????? Java Basics - Anfänger-Themen 8
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
EykS 3D Druckdatei basierend auf 3D Array? Java Basics - Anfänger-Themen 3
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben