Ссылки на объекты.
От: rollton  
Дата: 22.02.06 09:25
Оценка:
Написал реализацию списков на пхп. Всё работает отлично в пхп 5, но на хостинге только 4-ый, в котором работает правильно только корневой элемент помоги разобраться в чём дело... заранее спасибо


<?php
// класс для списка
class ListNode{
    var $Value;
    var $NextNode;
    var $SubNode;
}

$root = NULL;
$root = &addnode( &$root, '5656' );
$r1 = &addnode( &$root, '9595' );

addsub( $r1, '856');
$r2 = &addsub( &$r1, 'GGGGG');

addsub( $r2, '123456');
addnode( &$root, 'gggg' );

parse( $root, '=' );

// функция добавления в конец списка
function addnode( &$root, $value ){
    if ( $root == NULL ) {
        $root = new ListNode();
        $root->Value = $value;
        $root->NextNode = NULL;
        $root->SubNode = NULL;
        
        return $root;
    } else {
        $curnode = $root;
        while ( $curnode->NextNode != NULL ){
            $curnode = $curnode->NextNode;
        }
        $curnode->NextNode = new ListNode();
        $curnode = $curnode->NextNode;
        $curnode->Value = $value;
        $curnode->NextNode = NULL;
        $curnode->SubNode = NULL;    
        
        return $curnode;
    }
}

// добавление дочерних элементов
function addsub( &$root, $value ) {
    if ( $root->SubNode == NULL ) {
        $root->SubNode = new ListNode();
        $curnode = $root->SubNode;
        $curnode->Value = $value;
        $curnode->NextNode = NULL;
        $curnode->SubNode = NULL;
        return $curnode;
    } else {
        $curnode = $root->SubNode;
        while ( $curnode->NextNode != NULL ){
            $curnode = $curnode->NextNode;
        }
        $curnode->NextNode = new ListNode();
        $curnode = $curnode->NextNode;
        $curnode->Value = $value;
        $curnode->NextNode = NULL;
        $curnode->SubNode = NULL;    
        
        return $curnode;
    }
}

// вывод дерева
function parse( &$root, $space = '' ){
    $curnode = $root;
    while ( $curnode != NULL ) {
        echo $space.$curnode->Value.'<br>';
        if ( $curnode->SubNode != NULL ) {
            parse( $curnode->SubNode , $space.'====' );
        }
        $curnode = $curnode->NextNode;
    }
}

?>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.