#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
Node(int data) {
this->data = data;
next = nullptr;
}
};
class LinkedList {
private:
Node* head;
public:
LinkedList() {
head = nullptr;
}
void append(int data) {
Node* new_node = new Node(data);
if (head == nullptr) {
head = new_node;
} else {
Node* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = new_node;
}
}
int countNodes() {
int count = 0;
Node* current = head;
while (current != nullptr) {
count++;
current = current->next;
}
return count;
}
};
int main() {
LinkedList list;
list.append(1);
list.append(2);
list.append(3);
list.append(4);
list.append(5);
int nodeCount = list.countNodes();
cout << "Number of nodes in the linked list: " << nodeCount << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIE5vZGUgewpwdWJsaWM6CiAgICBpbnQgZGF0YTsKICAgIE5vZGUqIG5leHQ7CgogICAgTm9kZShpbnQgZGF0YSkgewogICAgICAgIHRoaXMtPmRhdGEgPSBkYXRhOwogICAgICAgIG5leHQgPSBudWxscHRyOwogICAgfQp9OwoKY2xhc3MgTGlua2VkTGlzdCB7CnByaXZhdGU6CiAgICBOb2RlKiBoZWFkOwoKcHVibGljOgogICAgTGlua2VkTGlzdCgpIHsKICAgICAgICBoZWFkID0gbnVsbHB0cjsKICAgIH0KCiAgICB2b2lkIGFwcGVuZChpbnQgZGF0YSkgewogICAgICAgIE5vZGUqIG5ld19ub2RlID0gbmV3IE5vZGUoZGF0YSk7CiAgICAgICAgaWYgKGhlYWQgPT0gbnVsbHB0cikgewogICAgICAgICAgICBoZWFkID0gbmV3X25vZGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgTm9kZSogY3VycmVudCA9IGhlYWQ7CiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50LT5uZXh0ICE9IG51bGxwdHIpIHsKICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN1cnJlbnQtPm5leHQgPSBuZXdfbm9kZTsKICAgICAgICB9CiAgICB9CgogICAgaW50IGNvdW50Tm9kZXMoKSB7CiAgICAgICAgaW50IGNvdW50ID0gMDsKICAgICAgICBOb2RlKiBjdXJyZW50ID0gaGVhZDsKICAgICAgICB3aGlsZSAoY3VycmVudCAhPSBudWxscHRyKSB7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gY291bnQ7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIExpbmtlZExpc3QgbGlzdDsKCiAgICBsaXN0LmFwcGVuZCgxKTsKICAgIGxpc3QuYXBwZW5kKDIpOwogICAgbGlzdC5hcHBlbmQoMyk7CiAgICBsaXN0LmFwcGVuZCg0KTsKICAgIGxpc3QuYXBwZW5kKDUpOwoKICAgIGludCBub2RlQ291bnQgPSBsaXN0LmNvdW50Tm9kZXMoKTsKICAgIGNvdXQgPDwgIk51bWJlciBvZiBub2RlcyBpbiB0aGUgbGlua2VkIGxpc3Q6ICIgPDwgbm9kZUNvdW50IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K