一些数据结构算法,不断补充
时间:2006-07-17 来源:jingzhi
/**
* 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。
* @param string $dir
* @return array
*/
function my_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != ".." && $file != "." ) {
if ( is_dir($dir . "/" . $file) ) {
$files[$file] = rec_scandir($dir . "/" . $file);
}else {
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}
/**
* php实现栈操作,php中提供了以数组为存储结构的栈操作函数array_push,array_pop。如果我们只是要将一个元素压入栈,那么用下面的函数更高效
* 在php中不用像C语言中那样再申请空间,还要严格防止越界。
* 需要注意的是,由于php的数组存储元素类型可以不同,所以我们可以把一个字符串
* 和一个数字甚至对象、资源类型变量放入同一个数组中,但我们自己一定要清楚我们在做什么。
*
* @param mix $param 注意这里只接受的类型为字符串或数字或字符,而不能是数组或source类型
* @param array $stack
* @return bool
*/
function stack_push($param,& $stack=array())
{
if( is_numeric($param) or is_string($param) )
{
$stack[] = $param;
return true;
}else{
return false;
}
}
/**
* 出栈操作
* @param array $stack
* @return mix
*/
function stack_pop($stack)
{
return $pop_param = array_pop($stack);
}
/**
* 对于队列,也可以用数组结构实现,php中也提供了相应的操作函数。
* array_shift,array_merge,array_search
*
*/
array_push
(PHP 4, PHP 5)
array_push -- 将一个或多个单元压入数组的末尾(入栈)
说明int array_push ( array &array, mixed var [, mixed ...] )
array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。返回数组新的单元总数。
array_pop
(PHP 4, PHP 5)
array_pop -- 将数组最后一个单元弹出(出栈)
说明mixed array_pop ( array &array )
array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL。
注: 使用本函数后会重置(
reset()
)数组指针。
之后我们来讨论用php实现树的数据结构的操作——二叉树的表示,先序、中序、后序遍历。
再之后是搜索二叉树
再之后我们讨论图的操作
* 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。
* @param string $dir
* @return array
*/
function my_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != ".." && $file != "." ) {
if ( is_dir($dir . "/" . $file) ) {
$files[$file] = rec_scandir($dir . "/" . $file);
}else {
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}
/**
* php实现栈操作,php中提供了以数组为存储结构的栈操作函数array_push,array_pop。如果我们只是要将一个元素压入栈,那么用下面的函数更高效
* 在php中不用像C语言中那样再申请空间,还要严格防止越界。
* 需要注意的是,由于php的数组存储元素类型可以不同,所以我们可以把一个字符串
* 和一个数字甚至对象、资源类型变量放入同一个数组中,但我们自己一定要清楚我们在做什么。
*
* @param mix $param 注意这里只接受的类型为字符串或数字或字符,而不能是数组或source类型
* @param array $stack
* @return bool
*/
function stack_push($param,& $stack=array())
{
if( is_numeric($param) or is_string($param) )
{
$stack[] = $param;
return true;
}else{
return false;
}
}
/**
* 出栈操作
* @param array $stack
* @return mix
*/
function stack_pop($stack)
{
return $pop_param = array_pop($stack);
}
/**
* 对于队列,也可以用数组结构实现,php中也提供了相应的操作函数。
* array_shift,array_merge,array_search
*
*/
array_push
(PHP 4, PHP 5)
array_push -- 将一个或多个单元压入数组的末尾(入栈)
说明int array_push ( array &array, mixed var [, mixed ...] )
array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。返回数组新的单元总数。
array_pop
(PHP 4, PHP 5)
array_pop -- 将数组最后一个单元弹出(出栈)
说明mixed array_pop ( array &array )
array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL。
注: 使用本函数后会重置(
reset()
)数组指针。
之后我们来讨论用php实现树的数据结构的操作——二叉树的表示,先序、中序、后序遍历。
再之后是搜索二叉树
再之后我们讨论图的操作
相关阅读 更多 +