Read a long time data structure but not how to use, on the Internet to see the data on the structure of PHP, learn a bit, and share with you. Last time to share the "PHP small tutorial implementation of the list", this time to add a two-way linked list.
Copy Code code as follows:
<?php
Class Hero
{
Public $pre =null;
Public $no;
Public $name;
Public $next =null;
Public function __construct ($no = ', $name = ')
{
$this->no= $no;
$this->name= $name;
}
static public Function Addhero ($head, $hero)
{
$cur = $head;
$isExist =false;
To determine whether the current list is empty
if ($cur->next==null)
{
$cur->next= $hero;
$hero->pre= $cur;
}
Else
{
If it is not an empty node, schedule the name to add
Find where to add
while ($cur->next!=null)
{
if ($cur->next->no > $hero->no)
{
Break
}
else if ($cur->next->no = = $hero->no)
{
$isExist =true;
echo "<br> cannot add the same number";
}
$cur = $cur->next;
}
if (! $isExist)
{
if ($cur->next!=null)
{
$hero->next= $cur->next;
}
$hero->pre= $cur;
if ($cur->next!=null)
{
$hero->next->pre= $hero;
}
$cur->next= $hero;
}
}
}
Traverse
static public Function Showhero ($head)
{
$cur = $head;
while ($cur->next!=null)
{
echo "<br> No.:". $cur->next->no. " Name: ". $cur->next->name;
$cur = $cur->next;
}
}
static public Function Delhero ($head, $herono)
{
$cur = $head;
$isFind =false;
while ($cur!=null)
{
if ($cur->no== $herono)
{
$isFind =true;
Break
}
Keep looking
$cur = $cur->next;
}
if ($isFind)
{
if ($cur->next!=null)
{
$cur->next_pre= $cur->pre;
}
$cur->pre->next= $cur->next;
}
Else
{
echo "<br> did not find the target";
}
}
}
$head = new Hero ();
$hero 1 = new Hero (1, ' 1111 ');
$hero 3 = new Hero (3, ' 3333 ');
$hero 2 = new Hero (2, ' 2222 ');
Hero::addhero ($head, $hero 1);
Hero::addhero ($head, $hero 3);
Hero::addhero ($head, $hero 2);
Hero::showhero ($head);
Hero::d Elhero ($head, 2);
Hero::showhero ($head);
?>