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 '
';

$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 '
';

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实现链表的基本操作

*/

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 '
';

$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 '
';

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);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值