<?php
class LinkedListObject {
public $previous;
public $next;
public $data;
/* Initialization of linked list object */
public function __construct() {
$this->previous = 0;
$this->data = NULL;
}
}
class LinkedList extends LinkedListObject {
public $len;
public $head;
public $tail;
/* Initialization of linked list */
public function __construct() {
$this->len = 0;
$this->head = NULL;
$this->tail = NULL;
}
}
function linked_list_create() {
$ll = new LinkedList;
return $ll;
}
function linked_list_object_create() {
$ll_object = new LinkedListObject;
return $ll_object;
}
function linked_list_append($ll, $item) {
$appendant = linked_list_object_create();
$appendant->data = $item;
$appendant->previous = $ll->tail;
if($ll->head == NULL) {
$ll->head = & $appendant;
}
$ll->tail->next = $appendant;
$ll->tail = $appendant;
/* Additional node with length plus one */
$ll->len++;
}
function linked_list_len($ll) {
return $ll->len;
}
$ll = linked_list_create();
for($num = 1; $num <= 10; $num++) {
linked_list_append($ll, $num);
printf("%d", linked_list_len
($ll)); }
?>
PD9waHAKCmNsYXNzIExpbmtlZExpc3RPYmplY3QgewogCiBwdWJsaWMgJHByZXZpb3VzOwogcHVibGljICRuZXh0OwogcHVibGljICRkYXRhOwoKIC8qIEluaXRpYWxpemF0aW9uIG9mIGxpbmtlZCBsaXN0IG9iamVjdCAqLwogcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewogICAkdGhpcy0+cHJldmlvdXMgPSAwOwogICAkdGhpcy0+bmV4dCA9IE5VTEw7CiAgICR0aGlzLT5kYXRhID0gTlVMTDsgICAKIH0gICAKfQoKY2xhc3MgTGlua2VkTGlzdCBleHRlbmRzIExpbmtlZExpc3RPYmplY3QgewogcHVibGljICRsZW47CiBwdWJsaWMgJGhlYWQ7IAogcHVibGljICR0YWlsOwoKIC8qIEluaXRpYWxpemF0aW9uIG9mIGxpbmtlZCBsaXN0ICovCiBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7CiAgICR0aGlzLT5sZW4gPSAwOwogICAkdGhpcy0+aGVhZCA9IE5VTEw7CiAgICR0aGlzLT50YWlsID0gTlVMTDsgICAKIH0KfQoKZnVuY3Rpb24gbGlua2VkX2xpc3RfY3JlYXRlKCkgeyAgIAogCiAkbGwgPSBuZXcgTGlua2VkTGlzdDsKICAgCiByZXR1cm4gJGxsOwp9CgpmdW5jdGlvbiBsaW5rZWRfbGlzdF9vYmplY3RfY3JlYXRlKCkgewoKICRsbF9vYmplY3QgPSBuZXcgTGlua2VkTGlzdE9iamVjdDsKICAgCiByZXR1cm4gJGxsX29iamVjdDsKCn0KCmZ1bmN0aW9uIGxpbmtlZF9saXN0X2FwcGVuZCgkbGwsICRpdGVtKSB7CgogJGFwcGVuZGFudCA9IGxpbmtlZF9saXN0X29iamVjdF9jcmVhdGUoKTsKICRhcHBlbmRhbnQtPmRhdGEgPSAkaXRlbTsKICRhcHBlbmRhbnQtPnByZXZpb3VzID0gJGxsLT50YWlsOwogJGFwcGVuZGFudC0+bmV4dCA9IE5VTEw7CgogIGlmKCRsbC0+aGVhZCA9PSBOVUxMKSB7CiAgICRsbC0+aGVhZCA9ICYgJGFwcGVuZGFudDsKIH0KCiAgJGxsLT50YWlsLT5uZXh0ID0gJGFwcGVuZGFudDsKIAogICRsbC0+dGFpbCA9ICRhcHBlbmRhbnQ7CiAKIC8qIEFkZGl0aW9uYWwgbm9kZSB3aXRoIGxlbmd0aCBwbHVzIG9uZSAqLwogJGxsLT5sZW4rKzsKCn0KCmZ1bmN0aW9uIGxpbmtlZF9saXN0X2xlbigkbGwpIHsKICByZXR1cm4gJGxsLT5sZW47Cn0KCiRsbCA9IGxpbmtlZF9saXN0X2NyZWF0ZSgpOwoKZm9yKCRudW0gPSAxOyAkbnVtIDw9IDEwOyAkbnVtKyspIHsKICBsaW5rZWRfbGlzdF9hcHBlbmQoJGxsLCAkbnVtKTsKcHJpbnRmKCIlZCIsIGxpbmtlZF9saXN0X2xlbigkbGwpKTsKfQoKIAo/Pg==