PHP模拟链表操作
PHP模拟链表操作
一、总结
1、类成员用的是->
2、对象节点相连的话,因为是对象,所以不用取地址符号
3、数组传递参数的时候传引用的方法 ,&
二、PHP模拟链表操作
代码一:
1 /** 2 * Class Node 3 * PHP模拟链表的基本操作 4 */ 5 class Node{ 6 public $data = ''; 7 public $next = null; 8 } 9 //初始化 10 function init($linkList){ 11 $linkList->data = 0; //用来记录链表长度 12 $linkList->next = null; 13 } 14 //头插法创建链表 15 function createHead(&$linkList,$length){ 16 for($i=0;$i<$length;$i++){ 17 $newNode = new Node(); 18 $newNode->data = $i; 19 $newNode->next = $linkList->next;//因为PHP中对象本身就是引用所以不用再可用“&” 20 $linkList->next = $newNode; 21 $linkList->data++; 22 } 23 } 24 //尾插法创建链表 25 function createTail(&$linkList,$length){ 26 $r = $linkList; 27 for($i=0;$i<$length;$i++){ 28 $newNode = new Node(); 29 $newNode->data = $i; 30 $newNode->next = $r->next; 31 $r->next = $newNode; 32 $r = $newNode; 33 $linkList->data++; 34 } 35 } 36 //在指定位置插入指定元素 37 function insert($linkList,$pos,$elem){ 38 if($pos<1 && $pos>$linkList->data+1){ 39 echo "插入位置错误!"; 40 } 41 $p = $linkList; 42 for($i=1;$i<$pos;$i++){ 43 $p = $p->next; 44 } 45 $newNode = new Node(); 46 $newNode->data = $elem; 47 $newNode->next = $p->next; 48 $p->next = $newNode; 49 } 50 //删除指定位置的元素 51 function delete($linkList,$pos){ 52 if($pos<1 && $pos>$linkList->data+1){ 53 echo "位置不存在!"; 54 } 55 $p = $linkList; 56 for($i=1;$i<$pos;$i++){ 57 $p = $p->next; 58 } 59 $q = $p->next; 60 $p->next = $q->next; 61 unset($q); 62 $linkList->data--; 63 } 64 //输出链表数据 65 function show($linkList){ 66 $p = $linkList->next; 67 while($p!=null){ 68 echo $p->data." "; 69 $p = $p->next; 70 } 71 echo '<br/>'; 72 } 73 74 $linkList = new Node(); 75 init($linkList);//初始化 76 createTail($linkList,10);//尾插法创建链表 77 show($linkList);//打印出链表 78 insert($linkList,3,'a');//插入 79 show($linkList); 80 delete($linkList,3);//删除 81 show($linkList);
代码2:
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2024-09-05:27岁,宅加太忙,特此在网上找女朋友,vx:fan404006308
AI交流资料群:753014672