Heim  >  Artikel  >  Java  >  Java-Verbesserung (Sanyi)-----Stack

Java-Verbesserung (Sanyi)-----Stack

黄舟
黄舟Original
2017-02-11 10:17:221465Durchsuche

In Java stellt die Stack-Klasse einen LIFO-Objektstapel (Last-In-First-Out) dar. Der Stapel ist eine sehr verbreitete Datenstruktur, die mithilfe einer typischen First-In-Last-Out-Operation implementiert wird. Jeder Stapel enthält eine Stapeloberseite. Jedes Mal, wenn der Stapel geöffnet wird, werden die Daten oben auf dem Stapel wie folgt entnommen:


Stack erweitert Vector um fünf Operationen, sodass Vektoren als Stapel behandelt werden können. Die fünf Operationen lauten wie folgt:

            操作                                           说明

<strong>empty</strong>()

测试堆栈是否为空。

<strong>peek</strong>()

查看堆栈顶部的对象,但不从堆栈中移除它。

<strong>pop</strong>()

移除堆栈顶部的对象,并作为此函数的值返回该对象。

<strong>push</strong>(E item)

把项压入堆栈顶部。

<strong>search</strong>(Object o)

返回对象在堆栈中的位置,以 1 为基数。

                                                                                                                                                            > Beschreibung

<strong>empty</strong>()

Testen Sie, ob der Stapel leer ist.

public class Stack<E> extends Vector<E>
<strong>peek</strong>()

Sehen Sie sich das Objekt oben im an Stapel, aber nicht Entfernen Sie es vom Stapel.

<strong>pop</strong>()

Entfernen Sie das Objekt oben im stapeln und dieses Objekt als Wert dieser Funktion zurückgeben.
/**
     * 构造函数
     */
    public Stack() {
    }

    /**
     *  push函数:将元素存入栈顶
     */
    public E push(E item) {
        // 将元素存入栈顶。
        // addElement()的实现在Vector.java中
        addElement(item);

        return item;
    }

    /**
     * pop函数:返回栈顶元素,并将其从栈中删除
     */
    public synchronized E pop() {
        E    obj;
        int    len = size();

        obj = peek();
        // 删除栈顶元素,removeElementAt()的实现在Vector.java中
        removeElementAt(len - 1);

        return obj;
    }

    /**
     * peek函数:返回栈顶元素,不执行删除操作
     */
    public synchronized E peek() {
        int    len = size();

        if (len == 0)
            throw new EmptyStackException();
        // 返回栈顶元素,elementAt()具体实现在Vector.java中
        return elementAt(len - 1);
    }

    /**
     * 栈是否为空
     */
    public boolean empty() {
        return size() == 0;
    }

    /**
     *  查找“元素o”在栈中的位置:由栈底向栈顶方向数
     */
    public synchronized int search(Object o) {
        // 获取元素索引,elementAt()具体实现在Vector.java中
        int i = lastIndexOf(o);

        if (i >= 0) {
            return size() - i;
        }
        return -1;
    }

<strong>push</strong>(E item )

Schiebt das Element nach oben des Stapels.

<strong>search</strong>(Objekt o )

Das Objekt auf den Stapel zurückgeben Position, Basis 1.
Stack erbt Vector und erweitert einfach Vector: Die Implementierung von Stack ist sehr einfach, mit nur einer Konstruktionsmethode und fünf Implementierungsmethoden (von Vector geerbt). von (sind nicht enthalten), und der Quellcode für seine Implementierung ist sehr einfach Das Obige ist der Inhalt des Java Improvement Chapter (Sanyi)-----Stack Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn