仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1372|回复: 20
打印 上一主题 下一主题

[学习教程] PHP编程:PHP完成的静态链表

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:35:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
算是1个熟悉的过程,所以c语言的基础有就更好,没有也不怕。   PHP完成的单链表,以下代码:
  1. <?php     //结点类     class Node{         private $next = NULL; //下一个结点指针         private $data = NULL; //数据             public function Node($data, $next = NULL){             $this->data = $data;             $next && $this->next = $next;         }         public function getData(){             return $this->data;         }         public function setData($data){             $this->data = $data;         }         public function getNext(){             return $this->next;         }         public function setNext($next){             $this->next = $next;         }     }      //单链表类     class LinkList{         private $data_list = NULL; //结点集                    public function LinkList($data = false){             $this->data_list = array();             $title = new Node(NULL);             $this->data_list[] = $title;                        if($data){                 if(is_array($data)){                     $this->addMoreData($data);                 }else{                     $this->addData($data);                 }             }         }         //前往
    第N个结点的值         public function getNodeByNumber($number){             return $this->data_list[$this->findKeyByNumber($number)]->getData();         }         //添加一组结点         public function addMoreData($datas){             foreach($datas as $value){                 $this->addData($value);             }         }         //添加结点一致
    进口
    ,供里面
    挪用
             //$number 添加在第几个结点的前面
             public function addData($data, $number = false){             $node = new Node($data);             if($number === FALSE  $number == count($this->data_list)){                 $this->insertLastNode($node);             }elseif($number > count($this->data_list)){                 return false;             }else{                 $this->insertNode($node, $number);             }         }         //拔出
    一个结点到最初
             private function insertLastNode($node){                 $node->setNext(NULL);                              $lastKey = $this->findLastNode();                 $insert_key = $this->insertNodeIntoArray($node);                 $this->data_list[$lastKey]->setNext($insert_key);         }             //拔出
    一个结点         private function insertNode($node, $number){             $insert_number = $this->findKeyByNumber($number);                 $node->setNext($this->data_list[$insert_number]->getNext());             $insert_key = $this->insertNodeIntoArray($node);             $this->data_list[$insert_number]->setNext($insert_key);         }         //查找第N个结点对应的数组key         private function findKeyByNumber($number){             $i = $key = 0;              while($i < $number){                 $key = $this->data_list[$key]->getNext();                 $i ++;             }                       return $key;         }         //将结点到场
    数组         private function insertNodeIntoArray($node){             $this->data_list[] = $node;                  return $this->getLastKey();         }         //删除结点         public function deleteNode($number){             if($number == 0  $number > count($this->data_list)){                 return false;             }              $pre_key = $this->findKeyByNumber($number - 1);             $key = $this->data_list[$pre_key]->getNext();            $this->data_list[$pre_key]->setNext($this->data_list[$key]->getNext());             unset($this->data_list[$key]);         }          //查找某结点的前一个结点         private function getPreNodeKey($key){             foreach($this->data_list as $k=>$v){                 if($v->getNext() == $key){                     return $k;                   }             }             return false;         }          //打印链表         public function getData_list(){             return $this->data_list;         }          //前往
    数组的最初
    一个键         private function getLastKey(){             end($this->data_list);             return key($this->data_list);         }          //判别
    某个键值是不是
    存在         private function ifExistKey($key){             if(array_key_exists($key, $this->data_list)){                 return true;             }                       return false;         }         //查找尾结点         public function findLastNode(){             foreach($this->data_list as $key=>$value){                 if($value->getNext() === NULL){                     return $key;                 }             }         }     } ?>
复制代码
没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不可靠,因此,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的。
第二个灵魂 该用户已被删除
沙发
发表于 2015-2-4 03:03:21 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
活着的死人 该用户已被删除
板凳
发表于 2015-2-7 03:36:35 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
柔情似水 该用户已被删除
地板
发表于 2015-2-20 03:52:19 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
金色的骷髅 该用户已被删除
5#
发表于 2015-3-6 16:18:13 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
爱飞 该用户已被删除
6#
发表于 2015-3-11 17:48:39 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
兰色精灵 该用户已被删除
7#
发表于 2015-3-11 20:42:25 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
分手快乐 该用户已被删除
8#
发表于 2015-3-16 21:45:17 | 只看该作者
做为1门年轻的语言,php一直很努力。
小魔女 该用户已被删除
9#
发表于 2015-3-22 15:13:46 | 只看该作者
当然这种网站的会员费就几十块钱。
再现理想 该用户已被删除
10#
发表于 2015-3-23 03:45:29 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
老尸 该用户已被删除
11#
发表于 2015-4-11 13:27:26 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
冷月葬花魂 该用户已被删除
12#
 楼主| 发表于 2015-4-13 09:18:01 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
飘灵儿 该用户已被删除
13#
发表于 2015-4-15 02:19:25 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
山那边是海 该用户已被删除
14#
发表于 2015-4-23 00:45:32 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
小女巫 该用户已被删除
15#
发表于 2015-4-25 19:48:15 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
因胸联盟 该用户已被删除
16#
发表于 2015-5-1 09:10:39 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
小妖女 该用户已被删除
17#
发表于 2015-5-2 20:41:49 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
18#
发表于 2015-5-6 19:56:45 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
蒙在股里 该用户已被删除
19#
发表于 2015-5-6 20:09:30 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
莫相离 该用户已被删除
20#
发表于 2015-5-6 22:09:27 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 13:59

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表