PHP-Standardbibliothek spl verknüpfte Liste, Stapel, Warteschlange

WBOY
Freigeben: 2016-08-08 09:18:59
Original
1364 Leute haben es durchsucht

Doppelt verknüpfte Listenklasse: SplDoublyLinkedList

1. Methoden zum Hinzufügen und Löschen von Knoten

Push: Fügen Sie einen Knoten am Ende von ein die verlinkte Liste
pop: Holen Sie sich den Endknoten in der verknüpften Liste und löschen Sie diesen Knoten aus der verknüpften Liste. Die Operation ändert nicht die Position des aktuellen Zeigers
unshift: Füge einen Knoten am Kopf der verknüpften Liste ein
Verschiebung: Löschen Sie einen Kopfknoten einer verknüpften Liste

2. Zeigeroperationsmethode

Zurückspulen: Lassen Sie den aktuellen Zeiger der verknüpften Liste auf den Kopf der verknüpften Liste zeigen (d. h. unten)
current: Rufen Sie das Element ab, auf das der aktuelle Knotenzeiger der verknüpften Liste zeigt. Vor dem Aufruf muss Rewind aufgerufen werden. Wenn der Knoten, auf den verwiesen wird, gelöscht wird, zeigt er auf einen leeren Knoten
next: Lassen Sie den aktuellen Zeiger der verknüpften Liste auf den nächsten Knoten zeigen, und der Rückgabewert von current ändert sich entsprechend
unten: Holen Sie sich das Kopfelement der verknüpften Liste, die aktuelle Zeigerposition bleibt unverändert
top: Holen Sie sich das Endelement der verknüpften Liste, die aktuelle Zeigerposition bleibt unverändert

3 Andere Methoden (Verwendung siehe Stack-Klasse)

gültig: Überprüfen Sie, ob noch Knoten in der Verknüpfte Liste, Sie können sie beim Schleifen der Ausgabe verwenden. Treffen Sie ein Urteil
count: zählt die Anzahl der Knoten in der verknüpften Liste
Schlüssel: Gibt den Schlüsselwert des aktuellen Knotens
zurück offsetSet: Legen Sie den Wert des angegebenen Schlüssels fest. Hinweis: Wenn der Schlüssel 0 ist, zeigt 0 auf den Kopf oder das Ende in der verknüpften Liste und auf den oberen Rand des Stapels.
offunset: Registrierung des Werts des angegebenen Schlüssels aufheben

<code><span><?</span>php
<span>/**
 * Created by 马廷广
 * User: 马廷广
 * Date: 2015/8/5
 * Time: 10:52
 */</span><span>$obj</span><span>=</span><span>new</span> SplDoublyLinkedList();
<span>$obj</span><span>-></span>push(<span>'b'</span>);
<span>$obj</span><span>-></span>push(<span>'c'</span>);
<span>$obj</span><span>-></span>unshift(<span>'a'</span>);
var_dump(<span>$obj</span>);
<span>/*   array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
)
*/</span><span>$obj</span><span>-></span>rewind();
var_dump(<span>$obj</span><span>-></span>current());<span>//string(1) "a"</span><span>$obj</span><span>-></span>next();
var_dump(<span>$obj</span><span>-></span>current());<span>//string(1) "a"</span>
var_dump(<span>$obj</span><span>-></span>bottom());<span>//string(1) "a"</span>
var_dump(<span>$obj</span><span>-></span>top());<span>//string(1) "c"</span>
var_dump(<span>$obj</span><span>-></span>pop());<span>//string(1) "c"</span>
var_dump(<span>$obj</span>);
<span>/*
*  array(2) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
  }
*/</span>
var_dump(<span>$obj</span><span>-></span>shift());<span>//string(1) "a"</span>
var_dump(<span>$obj</span>);
<span>/*
* array(1) {
    [0]=>
    string(1) "b"
  }
*/</span></code>
Nach dem Login kopieren

Stack-Klasse: SplStack-Klasse, geerbt von der SplDoublyLinkedList-Klasse

Prinzip: Die unterste Ebene der Stack-Klasse wird vom Stack implementiert, und Der Stapel ist eine erweiterte Nachverarbeitung. Daher weisen einige von der SplDoublyLinkedList-Klasse geerbte Methoden der SplStack-Klasse einige Unterschiede im Verständnis auf, z. B. die Rewind-Methode. Nachdem Spl die Rewind-Methode verwendet hat, zeigt der Zeiger auf den oberen Rand des Stapels in der Abbildung. Push- und Pop-Operationen auf die oberen Elemente des Stapels, Unshift- und Shift-Operationen auf das untere Element des Stapels

<code><span><?</span>php
<span>/**
 * Created by 马廷广
 * User: 马廷广
 * Date: 2015/8/5
 * Time: 11:47
 */</span><span>$stack</span><span>=</span><span>new</span> SplStack();
<span>$stack</span><span>-></span>push(<span>'a'</span>);
<span>$stack</span><span>-></span>push(<span>'b'</span>);
<span>$stack</span><span>-></span>push(<span>'c'</span>);
echo <span>$stack</span><span>-></span>count();<span>//3</span><span>$stack</span><span>-></span>rewind();
echo <span>$stack</span><span>-></span>current();<span>//c</span><span>$stack</span><span>-></span>offsetSet(<span>0</span>,<span>'d'</span>);<span>//offsetSet中0指向的是图中的栈顶,由栈顶向下递增1,2,3,4</span><span>while</span>(<span>$stack</span><span>-></span>valid()){
    echo <span>$stack</span><span>-></span>key()<span>.</span><span>"->"</span><span>.</span><span>$stack</span><span>-></span>current();
    <span>$stack</span><span>-></span>next();
}
<span>/*2->d
1->b
0->a
*/</span></code>
Nach dem Login kopieren

Warteschlangenklasse: SplQueue-Klasse, geerbt von der SplDoublyLinkedList-Klasse

enqueue: Betreten Sie die Warteschlange
dequeue: Verlassen Sie die Warteschlange
Die Methoden rewind, offsetSet und andere der Queue-Klasse ähneln der verknüpften Liste

<code><?php
/**
 * Created <span>by</span> 马廷广
 * <span>User</span>: 马廷广
 * <span>Date</span>: <span>2015</span>/<span>8</span>/<span>5</span>
 * <span>Time</span>: <span>12</span>:<span>36</span>
 */

$obj = <span>new</span> SplQueue();
$obj->enqueue(<span>'a'</span>);
$obj->enqueue(<span>'b'</span>);
$obj->enqueue(<span>'c'</span>);
var_dump($obj);
/*    [<span>0</span>]<span>=></span>
    string(<span>1</span>) <span>"a"</span>
    [<span>1</span>]<span>=></span>
    string(<span>1</span>) <span>"b"</span>
    [<span>2</span>]<span>=></span>
    string(<span>1</span>) <span>"c"</span>
  }
*/
$obj->unshift(<span>"d"</span>);
$obj->push(<span>'e'</span>);
var_dump($obj);
/*
*  array(<span>5</span>) {
    [<span>0</span>]<span>=></span>
    string(<span>1</span>) <span>"d"</span>
    [<span>1</span>]<span>=></span>
    string(<span>1</span>) <span>"a"</span>
    [<span>2</span>]<span>=></span>
    string(<span>1</span>) <span>"b"</span>
    [<span>3</span>]<span>=></span>
    string(<span>1</span>) <span>"c"</span>
    [<span>4</span>]<span>=></span>
    string(<span>1</span>) <span>"e"</span>
  }
*/
$obj->rewind();
echo $obj->current();<span>//</span>d
$obj->offsetSet(<span>0</span>,<span>'h'</span>);
var_dump($obj);
/*
* array(<span>5</span>) {
    [<span>0</span>]<span>=></span>
    string(<span>1</span>) <span>"h"</span>
    [<span>1</span>]<span>=></span>
    string(<span>1</span>) <span>"a"</span>
    [<span>2</span>]<span>=></span>
    string(<span>1</span>) <span>"b"</span>
    [<span>3</span>]<span>=></span>
    string(<span>1</span>) <span>"c"</span>
    [<span>4</span>]<span>=></span>
    string(<span>1</span>) <span>"e"</span>
  }
*/</code>
Nach dem Login kopieren

Copyright-Erklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne reproduziert werden die Erlaubnis des Bloggers.

Das Obige stellt die verknüpften Listen, Stapel und Warteschlangen der PHP-Standardbibliothek spl vor, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!