首页 > 开发 > PHP > 正文

php链表用法实例分析

2024-05-04 23:37:32
字体:
来源:转载
供稿:网友

这篇文章主要介绍了php链表用法,实例分析了php创建链表及针对链表节点的增加、删除、更新与遍历等常用操作,需要的朋友可以参考下

本文实例讲述了php链表用法。分享给大家供大家参考。具体如下:

这里简单介绍了php链表的基本用法,包括链表节点的创建、遍历、更新等操作。

 

 
  1. <?php 
  2. /** 
  3. * @author MzXy 
  4. * @copyright 2011 
  5. * @param PHP链表 
  6. */ 
  7. /** 
  8. * 
  9. *节点类 
  10. */ 
  11. class Node 
  12. private $Data;//节点数据 
  13. private $Next;//下一节点 
  14. public function setData($value){ 
  15. $this->Data=$value; 
  16. public function setNext($value){ 
  17. $this->Next=$value; 
  18. }  
  19. public function getData(){ 
  20. return $this->Data; 
  21. public function getNext(){ 
  22. return $this->Next; 
  23. public function __construct($data,$next){ 
  24. $this->setData($data); 
  25. $this->setNext($next); 
  26. }//功能类 
  27. class LinkList 
  28. private $header;//头节点 
  29. private $size;//长度 
  30. public function getSize(){ 
  31. $i=0; 
  32. $node=$this->header; 
  33. while($node->getNext()!=null
  34. { $i++; 
  35. $node=$node->getNext(); 
  36. return $i; 
  37. public function setHeader($value){ 
  38. $this->header=$value; 
  39. public function getHeader(){ 
  40. return $this->header; 
  41. public function __construct(){ 
  42. header("content-type:text/html; charset=utf-8"); 
  43. $this->setHeader(new Node(null,null)); 
  44. /** 
  45. *@author MzXy 
  46. *@param $data--要添加节点的数据 
  47.  
  48. */ 
  49. public function add($data) 
  50. $node=$this->header; 
  51. while($node->getNext()!=null
  52. $node=$node->getNext(); 
  53. $node->setNext(new Node($data,null)); 
  54. /** 
  55. *@author MzXy 
  56. *@param $data--要移除节点的数据 
  57.  
  58. */ 
  59. public function removeAt($data) 
  60. $node=$this->header; 
  61. while($node->getData()!=$data) 
  62. $node=$node->getNext(); 
  63. $node->setNext($node->getNext()); 
  64. $node->setData($node->getNext()->getData()); 
  65. /** 
  66. *@author MzXy 
  67. *@param 遍历 
  68.  
  69. */ 
  70. public function get() 
  71. $node=$this->header; 
  72. if($node->getNext()==null){ 
  73. print("数据集为空!"); 
  74. return
  75. while($node->getNext()!=null
  76. print($node->getNext()->getData()); 
  77. if($node->getNext()->getNext()==null){break;} 
  78. $node=$node->getNext(); 
  79. /** 
  80. *@author MzXy 
  81. *@param $data--要访问的节点的数据 
  82. * @param 此方法只是演示不具有实际意义 
  83.  
  84. */ 
  85. public function getAt($data) 
  86. $node=$this->header->getNext(); 
  87. if($node->getNext()==null){ 
  88. print("数据集为空!"); 
  89. return
  90. while($node->getData()!=$data) 
  91. if($node->getNext()==null){break;} 
  92. $node=$node->getNext(); 
  93. return $node->getData();  
  94. /** 
  95. *@author MzXy 
  96. *@param $value--需要更新的节点的原数据 --$initial---更新后的数据 
  97.  
  98. */ 
  99. public function update($initial,$value) 
  100. $node=$this->header->getNext(); 
  101. if($node->getNext()==null){ 
  102. print("数据集为空!"); 
  103. return
  104. while($node->getData()!=$data) 
  105. if($node->getNext()==null){break;} 
  106. $node=$node->getNext(); 
  107. $node->setData($initial);  
  108. ?> 

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表