#include<iostream>
using namespace std;
struct Node
{
int data;
Node *next;
};
class CLinkList
{
private:
Node *head;
public:
CLinkList();
~CLinkList();
void CreateCLinkList(int m);
void DispList();
void InsertElem(int i,int e);
int DeleteElem(int i);
};
CLinkList::CLinkList()
{
head = new Node();
head ->next = head;
}
CLinkList::~CLinkList()
{
Node *p,*q;
q = head;
while(q->next != head)
q = q->next;
while(head != head->next)
{
p = head;
head = head->next;
q->next = head;
delete p;
}
head = NULL;
}
void CLinkList::CreateCLinkList(int m)
{
int i=0;
Node *p = head;
for(i;i<m;i++)
{
Node *s = new Node();
cin>>s->data;
p->next = s;
s->next = head;
p = s;
}
}
void CLinkList::DispList()
{
Node *p = head->next;
while(p != head)
{
cout<<p->data<<" ";
p = p->next;
}
cout<<endl;
}
void CLinkList::InsertElem(int i,int e)
{
Node *p;
p = head;
int j = 1;
while(j<i && p->next != head)
{
p = p->next;
j++;
}
Node *s = new Node();
s->data = e;
s->next = p->next;
p->next = s;
}
int CLinkList::DeleteElem(int i)
{
int j=1;
Node *p = head;
while(j<i && p->next != head)
{
p = p->next;
j++;
}
Node *s = p->next;
p->next = s->next;
int m=0;
m = s->data;
delete s;
return m;
}
int main()
{
CLinkList *list = new CLinkList();
list->CreateCLinkList(5);
list->DispList();
list->InsertElem(3,10);
list->DispList();
list->DeleteElem(3);
list->DispList();
delete list;
system("pause");
return 0;
}