Heim >Backend-Entwicklung >PHP-Tutorial >php实现单链表的实例代码_PHP

php实现单链表的实例代码_PHP

WBOY
WBOYOriginal
2016-06-01 12:07:551044Durchsuche

复制代码 代码如下:

//链表节点
class node {
    public $id; //节点id
    public $name; //节点名称
    public $next; //下一节点
   

    public function __construct($id, $name) {
        $this->id = $id;
        $this->name = $name;
        $this->next = null;
    }
}

//单链表
class singelLinkList {
    private $header; //链表头节点
   

    //构造方法
    public function __construct($id = null, $name = null) {
        $this->header = new node ( $id, $name, null );
    }

    //获取链表长度
    public function getLinkLength() {
        $i = 0;
        $current = $this->header;
        while ( $current->next != null ) {
            $i ++;
            $current = $current->next;
        }
        return $i;
    }

    //添加节点数据
    public function addLink($node) {
        $current = $this->header;
        while ( $current->next != null ) {
            if ($current->next->id > $node->id) {
                break;
            }
            $current = $current->next;
        }
        $node->next = $current->next;
        $current->next = $node;
    }

    //删除链表节点
    public function delLink($id) {
        $current = $this->header;
        $flag = false;
        while ( $current->next != null ) {
            if ($current->next->id == $id) {
                $flag = true;
                break;
            }
            $current = $current->next;
        }
        if ($flag) {
            $current->next = $current->next->next;
        } else {
            echo "未找到id=" . $id . "的节点!
";
        }
    }

    //获取链表
    public function getLinkList() {
        $current = $this->header;
        if ($current->next == null) {
            echo ("链表为空!");
            return;
        }
        while ( $current->next != null ) {
            echo 'id:' . $current->next->id . '   name:' . $current->next->name . "
";
            if ($current->next->next == null) {
                break;
            }
            $current = $current->next;
        }
    }

    //获取节点名字
    public function getLinkNameById($id) {
        $current = $this->header;
        if ($current->next == null) {
            echo "链表为空!";
            return;
        }
        while ( $current->next != null ) {
            if ($current->id == $id) {
                break;
            }
            $current = $current->next;
        }
        return $current->name;
    }

    //更新节点名称
    public function updateLink($id, $name) {
        $current = $this->header;
        if ($current->next == null) {
            echo "链表为空!";
            return;
        }
        while ( $current->next != null ) {
            if ($current->id == $id) {
                break;
            }
            $current = $current->next;
        }
        return $current->name = $name;
    }
}

$lists = new singelLinkList ();
$lists->addLink ( new node ( 5, 'eeeeee' ) );
$lists->addLink ( new node ( 1, 'aaaaaa' ) );
$lists->addLink ( new node ( 6, 'ffffff' ) );
$lists->addLink ( new node ( 4, 'dddddd' ) );
$lists->addLink ( new node ( 3, 'cccccc' ) );
$lists->addLink ( new node ( 2, 'bbbbbb' ) );
$lists->getLinkList ();
echo "
-----------删除节点--------------
";
$lists->delLink ( 5 );
$lists->getLinkList ();

echo "
-----------更新节点名称--------------
";
$lists->updateLink ( 3, "222222" );
$lists->getLinkList ();

echo "
-----------获取节点名称--------------
";
echo $lists->getLinkNameById ( 5 );

echo "
-----------获取链表长度--------------
";
echo $lists->getLinkLength ();
?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn