#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* newNode = new Node();
newNode->data = newVal;
newNode->next = NULL;
if (head == NULL)
{
head = newNode;
}
else
{
Node* temp = head;
while (temp->next != head)
{
temp = temp->next;
}
temp->next = newNode;
}
newNode->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+bmV4dDsKCQkJCWRlbGV0ZSB0ZW1wOwoJCQkJdGVtcCA9IG5leHQ7CgkJCX0KCQkJd2hpbGUgKHRlbXAgIT0gaGVhZCk7CgkJfQoJfQoKCXZvaWQgYXBwZW5kTm9kZShpbnQgbmV3VmFsKQoJewoJCU5vZGUqIG5ld05vZGUgPSBuZXcgTm9kZSgpOwoJCW5ld05vZGUtPmRhdGEgPSBuZXdWYWw7CgkJbmV3Tm9kZS0+bmV4dCA9IE5VTEw7CgkJaWYgKGhlYWQgPT0gTlVMTCkKCQl7CgkJCWhlYWQgPSBuZXdOb2RlOwoJCX0KCQllbHNlCgkJewoJCQlOb2RlKiB0ZW1wID0gaGVhZDsKCQkJd2hpbGUgKHRlbXAtPm5leHQgIT0gaGVhZCkKCQkJewoJCQkJdGVtcCA9IHRlbXAtPm5leHQ7CgkJCX0KCQkJdGVtcC0+bmV4dCA9IG5ld05vZGU7CgkJfQoJCW5ld05vZGUtPm5leHQgPSBoZWFkOwoJfQoKCXZvaWQgZGlzcGxheURhdGEoKQoJewoJCWlmIChoZWFkKQoJCXsKCQkJTm9kZSogdGVtcCA9IGhlYWQ7CgkJCWRvCgkJCXsKCQkJCWNvdXQgPDwgdGVtcC0+ZGF0YSA8PCAiICI7CgkJCQl0ZW1wID0gdGVtcC0+bmV4dDsKCQkJfQoJCQl3aGlsZSh0ZW1wICE9IGhlYWQpOwoJCX0KCX0JCn07CgppbnQgbWFpbigpCnsKCUNpcmN1bGFyTGlua2VkTGlzdCBjOwoJYy5hcHBlbmROb2RlKDEwKTsKCWMuYXBwZW5kTm9kZSgyMCk7CgljLmRpc3BsYXlEYXRhKCk7CgoJcmV0dXJuIDA7Cn0=