이 문서의 예에서는 PHP 연결 목록 작업을 설명합니다. 참고용으로 공유합니다. 자세한 내용은 다음과 같습니다.
PHP에서 데이터 구조를 실행하는 것은 기본적으로 배열을 사용하여 시뮬레이션됩니다.
오늘 제가 겪은 문제는 두 개의 연결된 목록을 병합하는 것입니다.
연결된 목록 병합 렌더링
문제 설명: 연결 목록 A는 템플릿 연결 목록이고, 연결 목록 B의 길이는 불확실하며, 연결된 두 목록은 리스트 A와 B가 결합되어 C 연결 리스트를 형성합니다.
프로그래밍 아이디어에 대해 이야기해 보겠습니다. 연결 목록은 템플릿 연결 목록이므로 작업이 완료된 후 길이만 변경되지 않습니다. B 연결 리스트의 길이는 불확실합니다. 따라서 먼저 세 단계로 나누어진 B 연결 리스트를 판단할 수 있습니다.
B 연결 리스트가 비어 있습니까?
B 연결 리스트가 A 연결 리스트보다 짧거나 같은가요? > B 연결 리스트가 A 연결 리스트보다 긴가요?
$node = array( "nameid"=>"", "shoolid"=>" ", "depid"=>" ", "start"=>" ", "end"=>" " ); /* 现在上面数据,有的数据存在A链表里面,有的存在B链表里面,如果都没有,用A链表的数据节点来代替。 开始第一次完成的时候,想了一个很蛋痛的方式,还用到arra_diff()函数用这个链表作差。后来仔细思考了一下。 */ //$data 表示B链表 //$time 表示A链表 //这里为了节约资源,没开第三条链表,而是在B链表中操作,为什么要选一条不确定长度的链表 //看完你就知道为什么了 if(empty($data)) // { //申请节点 $data = array(); foreach($time as $value) { //将A链表的数据进行需求处理,组成我们需要的节点模式 $array = array("nameid"=>$value["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>""); array_push($data,$array); //将新节点压进栈 } } else if(count($data)<=count($time)) //进行长度对比 { for($i=0;$i<count($time);$i++) //for循环,不建议在for循环继续动态判断,我这里是偷懒了。 { if(empty($data[$i])) { //如果数据节点空,则构建节点 $array = array("nameid"=>$time[$i]["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>""); array_push($data,$array); } } }