php实现单链表的基本操作

26 篇文章 0 订阅


<?php
//定义链表节点
class LinkNode{
	public $data=null;
	public $next=null;
}
//初始化
function init($linkList){
	$linkList->data=0;//用来记录链表长度  
	$linkList->next=null;
}
//头插法创建链表
function createHead(&$linkList,$length){
	for($i=0;$i<$length;$i++){
		$newNode=new LinkNode();
		$newNode->data=$i;
		$newNode->next=$linkList->next;
		$linkList->next=$newNode;
		$linkList->data++;
	}
}
//尾插法创建链表
function createTail(&$linkList,$length){
	$r=$linkList;
	for($i=0;$i<$length;$i++){
		$newNode=new LinkNode();
		$newNode->data=$i;
		$newNode->next=$r->next;
		$r->next=$newNode;
		$r=$newNode;
		$linkList->data++;
	}
}
//在指定位置插入指定元素
function insert($linkList,$pos,$item){
	if($pos<1 && $pos>$linkList->data+1){
		echo '插入位置错误';
	}
	$p=$linkList;
	for($i=1;$i<$pos;$i++){
		$p=$p->next;
	}
	$newNode=new LinkNode();
	$newNode->data=$item;
	$newNode->next=$p->next;
	$p->next=$newNode;
}
//删除指定位置的元素 
function delete($linkList,$pos){
	if($pos<1 && $pos>$linkList->data+1){
		echo '删除位置不存在';
	}
	$p=$linkList;
	for($i=1;$i<$pos;$i++){
		$p=$p->next;
	}
	$q=$p->next;
	$p->next=$q->next;
	unset($q);
	$linkList->data--;
}
//输出链表数据  
function show($linkList){
	$p=$linkList->next;
	while($p!=null){
		echo $p->data.' ';
		$p=$p->next;
	}
	echo '<br/>';
}


$linkList=new LinkNode();
init($linkList);

//createHead($linkList,10);
createTail($linkList,10);
show($linkList);
insert($linkList,3,'a');
show($linkList);
delete($linkList,3);
show($linkList);

0 1 2 3 4 5 6 7 8 9 
0 1 a 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值