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

模拟链表:

rush:PHP;"> /**

  • 编号
  • @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 '
    ';
    $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.'重复了,请不要继续<a href="https://www.jb51.cc/tag/tianjia/" target="_blank" class="keywords">添加</a>了!';
    echo '<br>';

    return false;
  }
  $curr = $curr->next;
}
// <a href="https://www.jb51.cc/tag/tianjia/" target="_blank" class="keywords">添加</a>节点到尾部
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,$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,3,'wangdaye');

linkList::del($head,1);
linkList::edit($head,'hahaha');
linkList::echo_link_list($head);

?>

链表的增删查改:

rush:PHP;"> /**

  • 编号
  • @var int
    */
    public $id = 0;

/*

  • 引用下一个对象
    */
    public $next = null;

/**

  • 构造函数初始化数据
  • @param int $id
  • @param string $name
    */
    public function __construct($id = 0,'hahaha');
    linkList::echo_link_list($head);

?>

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...