Returnează elementul de sus într-o stivă (Programare, Java, Indexare, Metode, Listă Legată)

Natalie_94 a intrebat.
a intrebat.

Mă lupt cu metoda top() care ar trebui să recupereze elementul de sus al stivei, sau să returneze null dacă această stivă este goală și să returneze elementul de sus al stivei. Cum se poate repara bucla?

public class Stack<E> implements IStack<E> {
Node head;
    public E top() {

        if (head == null)
            return null;

        Node<E> tempNode = head;

        for (int i = 0; i < size; i++) {
            if (tempNode.getmNextNode() == null) {
                tempNode.getmElement();
            }
            tempNode = tempNode.getmNextNode();
        }
        return tempNode.getmElement();
    }
}

Clasa mea Node:

public class Node<E> {
    private E mElement;
    private Node<E> mNextNode;

    Node(E data) {
        this.setmElement(data);
    }

    public E getmElement() {
        return this.mElement;
    }

    public void setmElement(E element) {
        this.mElement = element;
    }

    public Node<E> getmNextNode() {
        return this.mNextNode;
    }

    public void setmNextNode(Node<E> node) {
        this.mNextNode = node;
    }
}

Comentarii

  • Exact cu ce erori te confrunți? și este codul tău complet? Unde sunt definite „head” și „size”? –  > Por valegians.
  • Nu ar fi head fi partea de sus a stivei? Dacă nu, de ce nu? De ce ar trebui să țineți evidența fundului stivei? –  > Por Andreas.
  • Probabil că ar trebui să includeți push codul pentru a ne da un indiciu despre implementarea ta – dar cel mai probabil trebuie doar să returnezi head. –  > Por Andy.
2 răspunsuri
Arvind Kumar Avinash
public E top() {
    if (head == null)
        return null;
    Node<E> tempNode = head;
    while(tempNode.getmNextNode()!=null) {
        tempNode = tempNode.getmNextNode();
    }
    return tempNode.getmElement();
}

Comentarii

  • Mulțumesc, am încercat, dar am primit eroarea Tip necesar: E pentru return head.getmElement() –  > Por Natalie_94.
  • Acest lucru nu ar trebui să vă dea o astfel de eroare. Este ceva în neregulă în altă parte în programul dvs. Postați codul complet pentru ajutor suplimentar. –  > Por Arvind Kumar Avinash.
  • A trebuit să adaug <E> în Node<E> head; astfel încât să nu-mi dea această eroare acum. Cred că head este totuși partea de jos a stivei, deoarece returnează elementul 0 –  > Por Natalie_94.
  • @Natalie_94 – Tocmai mi-am actualizat răspunsul. Sper că acum funcționează pentru tine. –  > Por Arvind Kumar Avinash.
Darkmoon Chief

Al tău top() ar trebui să returneze ultimul element împins în stivă și nu primul. Atunci când împingeți un element nou, metoda head se face referire la acest element. Astfel, metoda head este elementul de sus și ar fi returnat de metoda dvs.

public class Stack<E> implements IStack<E>{

    public E top() {
    if(head==null){
    throw new StackEmptyException();
     }
    return head.getmElement();
     }
}