1#include <iostream>
 2using namespace std;
 3
 4struct Node
 5 {
 6  int data;
 7  Node *next;
 8 }
;
 9 class CycleLinkList
10  {
11   private :
12   Node *first;
13   public :
14   CycleLinkList();
15   void InsertNode(int data);
16   void DeleteNode(int data);
17   void PrintAll();
18   }
;
19   
20   CycleLinkList:: CycleLinkList()
21   {
22    first=first->next;
23   }

24   void CycleLinkList::InsertNode(int data)
25   {
26   Node *s=new Node();
27   s->data=data;
28   Node *p=first;
29   if (p->next==first)
30   {
31   s->next=first->next;
32   first->next=s;
33   }

34   else
35   {
36   while(p->next!=first) p=p->next;
37   s->next=p->next;
38   p->next=s;
39   }

40   }

41   
42   void CycleLinkList::DeleteNode(int data)
43   {
44   Node *p=first->next;
45   Node *q=first->next;
46   while(p!=first)
47   {
48    if (p->data==data) break;
49    else
50    {
51    q=p;
52    p=p->next;
53    }

54   }

55   q->next=p->next;
56   delete p;   
57   }

58   void CycleLinkList:: PrintAll()
59   {
60   Node *p=first->next;
61   
62   while(p!=first)
63   {
64   cout<<p->data<<"  ";
65   p=p->next;
66   }

67   }

68   int main()
69   {
70   CycleLinkList *cl=new CycleLinkList();
71   cl->InsertNode(3);
72   cl->InsertNode(4);
73   cl->InsertNode(5);
74   cl->InsertNode(6);
75   cl->PrintAll();
76   cl->DeleteNode(4);
77   cl->PrintAll();
78   }