#include <iostream>
using namespace std;
class Node
{
public:
int data;
Node* next;
};
class CircularLinkedList
{
public:
Node* head;
CircularLinkedList()
{
head = NULL;
}
~CircularLinkedList()
{
if (head)
{
Node *temp = head;
do
{
Node *next = temp->next;
delete temp;
temp = next;
}
while (temp != head);
}
}
void appendNode(int newVal)
{
Node** temp = &head;
if (head) {
do {
temp = &((*temp)->next);
}
while (*temp != head);
}
*temp = new Node;
(*temp)->data = newVal;
(*temp)->next = head;
}
void displayData()
{
if (head)
{
Node* temp = head;
do
{
cout << temp->data << " ";
temp = temp->next;
}
while (temp != head);
}
}
};
int main()
{
CircularLinkedList c;
c.appendNode(10);
c.appendNode(20);
c.displayData();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgTm9kZQp7CnB1YmxpYzoKCWludCBkYXRhOwoJTm9kZSogbmV4dDsKfTsKCmNsYXNzIENpcmN1bGFyTGlua2VkTGlzdAp7CnB1YmxpYzoKCU5vZGUqIGhlYWQ7CgoJQ2lyY3VsYXJMaW5rZWRMaXN0KCkKCXsKCQloZWFkID0gTlVMTDsKCX0KCgl+Q2lyY3VsYXJMaW5rZWRMaXN0KCkKCXsKCQlpZiAoaGVhZCkKCQl7CgkJCU5vZGUgKnRlbXAgPSBoZWFkOwoJCQlkbwoJCQl7CgkJCQlOb2RlICpuZXh0ID0gdGVtcC0+bmV4dDsKCQkJCWRlbGV0ZSB0ZW1wOwoJCQkJdGVtcCA9IG5leHQ7CgkJCX0KCQkJd2hpbGUgKHRlbXAgIT0gaGVhZCk7CgkJfQoJfQoKCXZvaWQgYXBwZW5kTm9kZShpbnQgbmV3VmFsKQoJewoJCU5vZGUqKiB0ZW1wID0gJmhlYWQ7CgkJaWYgKGhlYWQpIHsKCQkJZG8gewoJCQkJdGVtcCA9ICYoKCp0ZW1wKS0+bmV4dCk7CgkJCX0KCQkJd2hpbGUgKCp0ZW1wICE9IGhlYWQpOwoJCX0KCQkqdGVtcCA9IG5ldyBOb2RlOwoJCSgqdGVtcCktPmRhdGEgPSBuZXdWYWw7CgkJKCp0ZW1wKS0+bmV4dCA9IGhlYWQ7Cgl9CgoJdm9pZCBkaXNwbGF5RGF0YSgpCgl7CgkJaWYgKGhlYWQpCgkJewoJCQlOb2RlKiB0ZW1wID0gaGVhZDsKCQkJZG8KCQkJewoJCQkJY291dCA8PCB0ZW1wLT5kYXRhIDw8ICIgIjsKCQkJCXRlbXAgPSB0ZW1wLT5uZXh0OwoJCQl9CgkJCXdoaWxlICh0ZW1wICE9IGhlYWQpOwoJCX0KCX0JCn07CgppbnQgbWFpbigpCnsKCUNpcmN1bGFyTGlua2VkTGlzdCBjOwoJYy5hcHBlbmROb2RlKDEwKTsKCWMuYXBwZW5kTm9kZSgyMCk7CgljLmRpc3BsYXlEYXRhKCk7CgoJcmV0dXJuIDA7Cn0=