A5下载 - 努力做内容最丰富最安全的下载站!

A5站长下载站

当前位置:A5下载 > 编程开发 > 网站开发 > PHP中模拟链表和链表的基本操作示例

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

时间:2016-02-29 10:59作者:fang人气:110

模拟链表:

<?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,模拟,链表,基本操作,示例,模拟,链表,php,PH

相关下载

查看所有评论+

网友评论

网友
您的评论需要经过审核才能显示

公众号