链表获取元素
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实现
原文地址:https://www.cnblogs.com/taoshihan/p/9542316.html