Maison  >  Article  >  développement back-end  >  À propos des opérations de liste chaînée en PHP

À propos des opérations de liste chaînée en PHP

不言
不言original
2018-06-19 10:13:531543parcourir

Cet article présente principalement le fonctionnement des listes liées PHP et analyse les compétences de définition et d'utilisation des listes liées PHP sous la forme d'exemples simples. Il a une certaine valeur de référence.

Cet article décrit PHP avec des exemples. Je le partage avec vous pour votre référence, les détails sont les suivants :

L'exécution de structures de données en php est essentiellement simulée avec des tableaux, juste avec une réflexion constante.

Le problème que j'ai rencontré aujourd'hui est de fusionner deux listes chaînées.

Liste chaînée fusionnant les rendus

Description du problème : Une liste chaînée est un modèle de liste chaînée, la longueur de la liste chaînée B est incertain, A,B Les deux listes chaînées sont combinées pour former une liste chaînée C.

Parlons d'idées de programmation : Une liste chaînée est un modèle de liste chaînée, donc une fois l'opération terminée, la seule longueur reste inchangée. La longueur de la liste chaînée B est incertaine. Par conséquent, nous pouvons d'abord juger la liste chaînée B, qui est divisée en trois étapes :

La liste chaînée B est-elle vide ?
La liste chaînée B est-elle plus courte ou égale au Une liste chaînée ?
Liste chaînée B Est-elle plus longue que la liste chaînée A

La programmation consiste à lister le plus de possibilités possible. Saisissez la variable En raison de l'exigence de la question, lorsque la liste chaînée A et la liste chaînée B sont égales, la liste chaînée B sera renvoyée directement, il n'est donc pas nécessaire de considérer ce problème.

$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);
     }
   }
}

L'algorithme ci-dessus est simplement pratiqué, combinant les données d'une liste chaînée avec les données de B.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos des principes de développement de modules multijoueurs en PHP

Comment implémenter par programmation PHP pour ajouter du contenu aux méthodes txt dans le fichier

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn