• 技术文章 >后端开发 >php教程

    php实现单链表的实例代码_php实例

    2016-06-07 17:25:02原创685
    复制代码 代码如下:

    //链表节点
    class node {
    public $id; //节点id
    public $name; //节点名称
    public $next; //下一节点

    public function __construct($id, $name) {
    $this->id = $id;
    $this->name = $name;
    $this->next = null;
    }
    }

    //单链表
    class singelLinkList {
    private $header; //链表头节点

    //构造方法
    public function __construct($id = null, $name = null) {
    $this->header = new node ( $id, $name, null );
    }

    //获取链表长度
    public function getLinkLength() {
    $i = 0;
    $current = $this->header;
    while ( $current->next != null ) {
    $i ++;
    $current = $current->next;
    }
    return $i;
    }

    //添加节点数据
    public function addLink($node) {
    $current = $this->header;
    while ( $current->next != null ) {
    if ($current->next->id > $node->id) {
    break;
    }
    $current = $current->next;
    }
    $node->next = $current->next;
    $current->next = $node;
    }

    //删除链表节点
    public function delLink($id) {
    $current = $this->header;
    $flag = false;
    while ( $current->next != null ) {
    if ($current->next->id == $id) {
    $flag = true;
    break;
    }
    $current = $current->next;
    }
    if ($flag) {
    $current->next = $current->next->next;
    } else {
    echo "未找到id=" . $id . "的节点!
    ";
    }
    }

    //获取链表
    public function getLinkList() {
    $current = $this->header;
    if ($current->next == null) {
    echo ("链表为空!");
    return;
    }
    while ( $current->next != null ) {
    echo 'id:' . $current->next->id . ' name:' . $current->next->name . "
    ";
    if ($current->next->next == null) {
    break;
    }
    $current = $current->next;
    }
    }

    //获取节点名字
    public function getLinkNameById($id) {
    $current = $this->header;
    if ($current->next == null) {
    echo "链表为空!";
    return;
    }
    while ( $current->next != null ) {
    if ($current->id == $id) {
    break;
    }
    $current = $current->next;
    }
    return $current->name;
    }

    //更新节点名称
    public function updateLink($id, $name) {
    $current = $this->header;
    if ($current->next == null) {
    echo "链表为空!";
    return;
    }
    while ( $current->next != null ) {
    if ($current->id == $id) {
    break;
    }
    $current = $current->next;
    }
    return $current->name = $name;
    }
    }

    $lists = new singelLinkList ();
    $lists->addLink ( new node ( 5, 'eeeeee' ) );
    $lists->addLink ( new node ( 1, 'aaaaaa' ) );
    $lists->addLink ( new node ( 6, 'ffffff' ) );
    $lists->addLink ( new node ( 4, 'dddddd' ) );
    $lists->addLink ( new node ( 3, 'cccccc' ) );
    $lists->addLink ( new node ( 2, 'bbbbbb' ) );
    $lists->getLinkList ();
    echo "
    -----------删除节点--------------
    ";
    $lists->delLink ( 5 );
    $lists->getLinkList ();

    echo "
    -----------更新节点名称--------------
    ";
    $lists->updateLink ( 3, "222222" );
    $lists->getLinkList ();

    echo "
    -----------获取节点名称--------------
    ";
    echo $lists->getLinkNameById ( 5 );

    echo "
    -----------获取链表长度--------------
    ";
    echo $lists->getLinkLength ();
    ?>

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 单链表
    上一篇:将博客园(cnblogs.com)数据导入到wordpress的代码_php实例 下一篇:php中计算程序运行时间的类代码_php实例
    大前端线上培训班

    相关文章推荐

    • 五分钟带你了解PHP中的魔术方法(实例详解)• PHP中clone关键字和__clone()方法的使用(实例详解)• PHP中的命名空间定义与使用(实例详解)• 带你分清类中的构造函数与析构函数• 怎样去搞定PHP类的继承?(总结分享)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网