標籤:link ret 判斷 turn next 結構 class lis list
鏈表擷取元素
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;
<?phpclass 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實現