1. 程式人生 > >[PHP] 數據結構-鏈表創建-插入-刪除-查找的PHP實現

[PHP] 數據結構-鏈表創建-插入-刪除-查找的PHP實現

開始 false dump 查找 ins tel tde 當前 ret

鏈表獲取元素
1.聲明結點p指向鏈表第一個結點,j初始化1開始
2.j<i,p指向下一結點,因為此時p是指向的p的next,因此不需要等於
3.如果到末尾了,p還為null,就是沒有查找到


插入元素
1.插入元素和查找類似,找到位置後
2.生成新的結點s, s->next=p->next p->next=s;

刪除元素
1.刪除元素,找到位置後
2.繞過一下,q=p->next p->next=q->next;

<?php
class Node{
        public $data;
        public $next;
}
//創建一個鏈表
$linkList=new Node();
$linkList->next=null;
$temp=$linkList;
for($i=1;$i<=10;$i++){
        $node=new Node();
        $node->data="aaa{$i}";
        $node->next=null;
        $temp->next=$node;
        $temp=$node;
}


//獲取元素
function getEle($linkList,$i,&$e){
        $p=$linkList->next;
        //尋找結點標準語句
        $j=1;
        while($p && $j<$i){
                $p=$p->next;
                ++$j;
        }   
        if(!$p || $j>$i){
                return false;
        }   
        $e=$p->data;
        return true;
}

//插入元素
function listInsert(&$linkList,$i,$e){
        $p=$linkList;
        $j=1;
        while($p && $j<$i){
                $p=$p->next;
                ++$j;
        }   
        if(!$p || $j>$i){
                return false;
        }   
        $s=new Node();
        $s->data=$e;
        //插入元素標準語句
        $s->next=$p->next;
        $p->next=$s;
        return true;
}
//刪除元素
function listDelete(&$linkList,$i,&$e){
        $p=$linkList;
        $j=1;
        //註意這裏的判斷$p->next為真,主要是後面要把$p->next指向$p->next->next
        while($p->next && $j<$i){
                $p=$p->next;
                ++$j;
        }
        if(!$p->next || $j>$i){
                return false;
        }
        $q=$p->next;//這個才是當前元素
        $e=$q->data;
        $p->next=$q->next;
        return true;
}
$e="";
//獲取元素
getEle($linkList,5,$e);
var_dump($e);
//插入元素
listInsert($linkList,5,"taoshihan");
//刪除元素
listDelete($linkList,1,$e);
var_dump($e);
var_dump($linkList);

  

[PHP] 數據結構-鏈表創建-插入-刪除-查找的PHP實現