无头结点的循环单链表的结点删除

#include
#include"LinkList.h"
using namespace std;
LinkList::LinkList(){
first=NULL;
}
LinkList::LinkList(int n){
Node *s,*r=NULL;
int j=1;
for(int i=0;i {
s=new Node;
if(!s){
cout }
s->data=j++;
if(r==NULL)
{
r=s;
first=r;
}
else
{
r->next=s;
r=r->next;
}
}
r->next=first;
}
LinkList::~LinkList(){
Node *q=NULL;
while(first){
q=first;
first=first->next;
delete q;
}
}
int LinkList::GetLength()
{
int len=0;
Node *p=first;
do{
len++;
p=p->next;
}while(p!=first);
return len;
}
bool LinkList::Delete(int x){
Node *p=first->next;
Node *pre=first;
Node *q=NULL;
int i=0;
while(i if(p->data==x){
q=p;
pre->next=q->next;
delete q;
return true;
break;
}
p=p->next;
pre=pre->next;
i++;
}
return false;
}
void LinkList::PrintList(){
Node *p=first;
do{
cout<data<<" ";
p=p->next;
}while(p!=first);
}
void main(){
LinkList a(19);
cout<<"输出表中所有元素:\n";
a.PrintList();
cout<<endl;
a.Delete(1);
a.PrintList();
}