#include<iostream>
using namespace std;
struct Node
{
int data;
Node *pror;//前驱
Node *next;//后继
};
class DLinkList
{
private:
Node *head;
public:
DLinkList();
~DLinkList();
void CreateDlinkList(int k);
void DispList();
void InsertElem(int i,int e);
void DeleteElem(int i);
int GetPror(int i);
};
DLinkList::DLinkList()
{
head = new Node();
head->next = head;
head->pror = head;
}
int DLinkList::GetPror(int i)
{
Node *p = head;
int j=0;
while(j<i && p->next != head)
{
p = p->next;
j++;
}
cout<<p->pror->data;
return p->pror->data;
}
DLinkList::~DLinkList()
{
Node *p,*q;
q = head;
while(q ->next != head)
q = q->next;
while(head != head->next)
{
p = head;
head = head->next;
head->pror = q;
q->next = head;
delete p;
}
head = NULL;
}
void DLinkList::CreateDlinkList(int k)
{
int i=0;
Node *p = head;
Node *s;
for(i;i<k;i++)
{
s = new Node;
cin>>s->data;
p->next = s;
s->pror = p;
head->pror = s;
s->next = head;
p = s;
}
}
void DLinkList::DispList()
{
Node *p = head->next;
while(p != head)
{
cout<<p->data<<" ";
p = p->next;
}
cout<<endl;
}
void DLinkList::DeleteElem(int i)
{
Node *p = head;
int j=1;
while(j<i && p->next != head)
{
p = p->next;
j++;
}
Node *s = p->next;
p->next = s->next;
s->next->pror = p;
delete s;
}
void DLinkList::InsertElem(int i,int e)
{
Node *p = head;
int j=1;
while(j<i && p->next !=head)
{
p = p->next;
j++;
}
Node *s = new Node();
s->data = e;
p->next->pror = s;
s->next = p->next;
p->next = s;
s->pror = p;
}
int main()
{
DLinkList *list = new DLinkList();
list->CreateDlinkList(5);
list->DispList();
list->InsertElem(3,10);
list->DispList();
list->DeleteElem(3);
list->DispList();
list->GetPror(3);
system("pause");
delete list;
return 0;
}
循环链表
最新推荐文章于 2023-10-14 23:33:20 发布