#include <iostream>
using namespace std;
class DLLnode{
public:
int data;
DLLnode *prev;
DLLnode *next;
DLLnode(int value,DLLnode *p=NULL,DLLnode *n=NULL)
{
data=value;
prev=p;
next=n;
}
DLLnode(DLLnode *p=NULL,DLLnode *n=NULL)
{
prev=p;
next=n;
}
};
class DList{
public:
int size;
DLLnode *head;
DLLnode *tail;
DLLnode *current;
DList()
{
size=0;
head=new DLLnode(0,NULL,NULL);
tail=head;
current=head;
}
~DList()
{
clear();
}
void clear()
{
while(head!=head)
{
DLLnode *temp=head->next;
delete head;
head=temp;
}
size=0;
tail=NULL;
}
void addtoFront(int value)
{
DLLnode *a;
a=new DLLnode(value);
a->prev=head;
a->next=head->next;
head->next->prev=a;
head->next=a;
size++;
}
void addtoTail(int value)
{
DLLnode *a;
a=new DLLnode(value);
current->next=a;
a->prev=current;
a->next=head;
current=a;
size++;
}
bool deleteFixvalue(int value)
{
DLLnode *cur=head->next;
while(cur->data!=value)
{
cur=cur->next;
if(cur==head)
{
cout<<"未找到该元素"<<endl;
return false;
}
}
cur->prev->next=cur->next;
cur->next->prev=cur->prev;
delete[]cur;
return true;
}
void prt_list()
{
DLLnode *p=head->next;
while (p!=head)
{
cout<<p->data<<endl;
p=p->next;
}
}
};
循环链表的操作
最新推荐文章于 2022-11-12 11:36:32 发布