PHP数据结构
<?php
//冒泡排序(优化)
$a = [9, 86, 4, 3, 2, 62, 3, 819, 746, 32];
print_r($a);
echo "<br/>";
for ($b = 0; $b < count($a) - 1; $b++) {
for ($c = 0; $c < sizeof($a) - 1 - $b; $c++) {
$flag=true; //记录每一趟需要排序否?
if ($a[$c] > $a[$c + 1]) {
$temp = $a[$c];
$a[$c] = $a[$c + 1];
$a[$c + 1] = $temp;
$flag = false;
}
if ($flag) {
bresk;
}
}
}
print_r($a);
?>
//去除双数
<?php
$a = [9, 86, 4, 3, 2, 62, 3, 819, 746, 32];
print_r($a);
echo "<br/>";
foreach ($a as $b=>$x) {
if($x%2==0){
unset($a[$b]);
}
}
print_r($a);
?>
<?php
/**双向链表
* 链表元素结点类
*/
class Node{
public $pre=null;
public $next=null;
public $data=null;
public function __Construct($data){
$this->data=$data;
}
}
/**
* 双向链表类
*/
class DoubleLink{
private $head;
private $tail;
private $len;
public function __Construct(){
$newNode=$newNode=new Node(null);
$this->tail=$this->head=$newNode;
$this->len=0;
}
public function addNode($obj,$search=null){
$newNode=new Node($obj);
$tmp=$this->searchNode($search);
if($tmp!=null){
$newNode->pre=$tmp->pre;
$newNode->next=$tmp;
$tmp->pre=$obj;
$newNode->pre->next=$newNode;
}else{
$newNode->pre=$this->tail;
$this->tail->next=$newNode;
$this->tail=$newNode;
}
$this->len++;
}
public function delNode($obj){
$tmp=$this->searchNode($obj);
if(null!=$tmp){
if($tmp->next!=null){
$tmp->pre->next=$tmp->next;
$tmp->next->pre=$tmp->pre;
}else{
$tmp->pre->next=null;
}
unset($tmp);
$this->len--;
}
}
public function setNode($obj,$search){
$tmp=$this->searchNode($obj);
if(null!=$tmp){
$tmp->data=$search;
}
}
public function searchNode($obj){
$tmp=$this->head;
while($tmp->next!=null){
$tmp=$tmp->next;
if($tmp->data===$obj){
return $tmp;
}
}
return null;
}
public function show(){
$tmp=$this->head;
while($tmp->next!==null){
$tmp=$tmp->next;
echo $tmp->data;
}
echo("<br/>");
$tmp=$this->tail;
while($tmp->pre!==null){
echo $tmp->data;
$tmp=$tmp->pre;
}
}
}
$myList = new DoubleLink();
$myList->addNode("A");
$myList->addNode("B");
$myList->addNode("C");
$myList->addNode("D");
$myList->addNode("E");
$myList->addNode('F');
$myList->delNode('F');
$myList->setNode("B",'G');
$myList->show();
?>
<?php
//升序(小顶堆)
$heap=new SplminHeap();
$heap->insert([98,98]);
$heap->insert([98,99]);
$heap->insert([98,91]);
var_export($heap->extract());
echo "-->";
var_export($heap->extract());
echo "-->";
var_export($heap->extract());
?>
<?php
//降序,大顶堆
$heap=new SplmaxHeap();
$heap->insert([98,98]);
$heap->insert([98,99]);
$heap->insert([98,91]);
var_export($heap->extract());
echo "-->";
var_export($heap->extract());
echo "-->";
var_export($heap->extract());
?>
看清生活的本质之后
也仍热爱生活

浙公网安备 33010602011771号