Связанный список в php дает ошибки - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в PHP, и я пытаюсь создать связанный список, но он продолжает выдавать ошибки

<?php
class Node {
  private $value;
  private $nxt;
  function __construct($x) {
    $this->value = $x;
    $this->set_nxt(null);
  }
  function set_value($x) {
    $this->value = $x;
  }
  function get_value() {
    return $this->value;
  }
  function set_next($x) {
    $this->nxt = $x;
  }
  function get_next() {
    return $this->nxt;
  }
}
class linked_list {
  private $start = new Node(null);//error is here
  function __construct() {
    $start = new Node(null);
  }
  function add_name($nme) {
    $start = new Node($nme);
    if ($start->get_value() == null) {
      $start = new Node(nme);
      $start->set_next(null);
    } else {
      $temp = new Node($nme);
      $temp->set_next($start);
      $start = $temp;
    }
  }
  function show_all() {
    $temp = $start;
    while ($temp != null) {
      echo $temp->get_value();
      echo "<br/>";
      $temp = $temp->get_next();
    }
  }
}
?>

Было бы здорово, если бы вы могли сказать мне, что я делаю неправильно и как Я должен сделать это правильно. Пожалуйста, я просто хочу знать, что я делаю неправильно с кодом PHP. Нет необходимости рассказывать мне о связанном списке, я просто хочу знать, что я делаю неправильно с реализацией.

Вот данные, с которыми я работаю:

$list = new linked_list();
$list->add_name("first");
$list->add_name("second");
$list->add_name("third");
$list->add_name("fourth");
$list->show_all();

и здесь это ошибка:

here

По сути, говорят, что $ start в классе связанного списка является константой. Я прокомментировал место, откуда исходит ошибка

1 Ответ

1 голос
/ 21 апреля 2020

Необходимо решить как минимум четыре ошибки:

  1. $this->set_nxt(null); в конструкторе класса Node: set_nxt - неопределенная функция (возможно, вы имели в виду set_next);

  2. private $start = new Node(null); в классе linked_list: вы не можете объявить свойство и инициализировать его с новым экземпляр класса (вы можете сделать это внутри конструктора);

  3. $start = new Node(nme); в функции add_name класса linked_list: nme - неопределенная константа (возможно, вы имели в виду $name);

  4. $temp = $start; в функции show_all класса linked_list: $start - неопределенная переменная (возможно, вы имели в виду $this->start).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...