[PHP] 數據結構-鏈表創建-插入-刪除-查找的PHP實現
阿新 • • 發佈:2018-08-27
開始 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實現