首页 > 开发 > PHP > 正文

PHP中模拟链表和链表的基本操作示例

2024-05-04 23:43:22
字体:
来源:转载
供稿:网友
这篇文章主要介绍了PHP中模拟链表和列表的基本操作示例,包括链表的增删查改等,说明基本上都包含在代码注释中,需要的朋友可以参考下
 

模拟链表:

<?php /** * PHP实现链表的基本操作 */class linkList {  /**   * 姓名   * @var string   */  public $name = '';     /**   * 编号   * @var int   */  public $id = 0;     /*   * 引用下一个对象   */  public $next = null;     /**   * 构造函数初始化数据   * @param int $id   * @param string $name   */  public function __construct($id = 0, $name = '') {    $this->name = $name;    $this->id  = $id;  }     /**   * 遍历链表   */  public static function echo_link_list($head) {    $curr = $head;    while ($curr->next != null) {      echo '姓名:'.$curr->next->name, ' 编号:'.$curr->next->id;      echo '<br>';      $curr = $curr->next;    }  }     /**   * 添加新节点   */  public static function add($head, $id, $name) {    $curr = $head;    $obj = new linkList($id, $name);         while ($curr->next != null) {      // 如果当前ID < 下一个ID,则添加到中间,添加节点到指定顺序位置      if ($curr->next->id > $id) {                 $obj->next = $curr->next;        $curr->next = $obj;                 return true;      } else if ($curr->next->id == $id) {                 echo '当前Id:'.$id.'重复了,请不要继续添加了!';        echo '<br>';                 return false;      }      $curr = $curr->next;    }    // 添加节点到尾部    if ($curr->next == null) {      $curr->next = $obj;    }  }     /**   * 删除节点   */  public static function del($head, $id) {    $curr = $head;         while($curr->next != null) {      if ($curr->next->id == $id) {        $curr->next = $curr->next->next;        return true;      }      $curr = $curr->next;    }  }     /**   * 修改节点   */  public static function edit($head, $id, $new_name) {    $curr = $head;         while($curr->next != null) {      if ($curr->next->id == $id) {        $curr->next->name = $new_name;      }      $curr = $curr->next;    }  }} $head = new linkList();linkList::add($head, 1, 'wangdk');linkList::add($head, 2, 'sunshuzhen');linkList::add($head, 8, 'wanghaha');linkList::add($head, 6, 'wangchufen');linkList::add($head, 6, 'wangchufen');linkList::add($head, 3, 'wangdaye'); linkList::del($head, 1);linkList::edit($head, 2, 'hahaha');linkList::echo_link_list($head); ?>

链表的增删查改:

<?php /** * PHP实现链表的基本操作 */class linkList {  /**   * 姓名   * @var string   */  public $name = '';     /**   * 编号   * @var int   */  public $id = 0;     /*   * 引用下一个对象   */  public $next = null;     /**   * 构造函数初始化数据   * @param int $id   * @param string $name   */  public function __construct($id = 0, $name = '') {    $this->name = $name;    $this->id  = $id;  }     /**   * 遍历链表   */  public static function echo_link_list($head) {    $curr = $head;    while ($curr->next != null) {      echo '姓名:'.$curr->next->name, ' 编号:'.$curr->next->id;      echo '<br>';      $curr = $curr->next;    }  }     /**   * 添加新节点   */  public static function add($head, $id, $name) {    $curr = $head;    $obj = new linkList($id, $name);         while ($curr->next != null) {      // 如果当前ID < 下一个ID,则添加到中间,添加节点到指定顺序位置      if ($curr->next->id > $id) {                 $obj->next = $curr->next;        $curr->next = $obj;                 return true;      } else if ($curr->next->id == $id) {                 echo '当前Id:'.$id.'重复了,请不要继续添加了!';        echo '<br>';                 return false;      }      $curr = $curr->next;    }    // 添加节点到尾部    if ($curr->next == null) {      $curr->next = $obj;    }  }     /**   * 删除节点   */  public static function del($head, $id) {    $curr = $head;         while($curr->next != null) {      if ($curr->next->id == $id) {        $curr->next = $curr->next->next;        return true;      }      $curr = $curr->next;    }  }     /**   * 修改节点   */  public static function edit($head, $id, $new_name) {    $curr = $head;         while($curr->next != null) {      if ($curr->next->id == $id) {        $curr->next->name = $new_name;      }      $curr = $curr->next;    }  }} $head = new linkList();linkList::add($head, 1, 'wangdk');linkList::add($head, 2, 'sunshuzhen');linkList::add($head, 8, 'wanghaha');linkList::add($head, 6, 'wangchufen');linkList::add($head, 6, 'wangchufen');linkList::add($head, 3, 'wangdaye'); linkList::del($head, 1);linkList::edit($head, 2, 'hahaha');linkList::echo_link_list($head); ?>
 


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表