主题:新手写的简单的循环链表类定义(C++)望大虾指点
#include <iostream.h>
struct Tnode
{
int data;
Tnode *next;
};//节点定义
class TPclass
{
public:
TPclass(int ms,int mb,int mm);
void Creat();
//int OutNode(Tnode *p);
void Print();
~TPclass()
{
Tnode *temp;
for(temp=flag;temp->next!=NULL;temp=temp->next)
delete(temp);
}
protected:
Tnode *head,*tail,*flag;
int sump,beginp,m;
};
TPclass::TPclass(int ms,int mb,int mm)//初始化
{
head=NULL;
tail=NULL;
sump=ms;
beginp=mb;
m=mm;
flag=NULL;
}
void TPclass::Creat()//建立循环表
{
Tnode *temp=NULL;
int number=1;
head=new Tnode;
tail=new Tnode;
head->data=1;
head->next=tail;
tail->data=sump;
tail->next=head;//建立头和尾
while(number!=(sump-1))//中间插的人的数量 按一定的位置顺序
{
temp=new Tnode;
temp->data=sump-number;
temp->next=head->next;
cout<<temp->data<<endl;
head->next=temp;
number++;
}
}
void TPclass::Print()
{
Tnode *temp=head,*p=NULL;//temp:开始的变量
while(temp->data!=beginp)
temp=temp->next;
while(sump!=2)//留两个 可以设置变量 让用户选择
{
for(int i=1;i<=m;i++)//选人
temp=temp->next;
p=temp->next;//p=temp
temp->next=p->next;
cout<<p->data<<endl;
delete(p);
sump--;
}
flag=temp;
for(int i=1;i<=2;i++)
{
cout<<"the last"<<temp->data;//因为留了两个
temp=temp->next;
}
}
void main()
{
int stop;
TPclass TP(20,5,2);
TP.Creat();
TP.Print();
cin >>stop;
}
struct Tnode
{
int data;
Tnode *next;
};//节点定义
class TPclass
{
public:
TPclass(int ms,int mb,int mm);
void Creat();
//int OutNode(Tnode *p);
void Print();
~TPclass()
{
Tnode *temp;
for(temp=flag;temp->next!=NULL;temp=temp->next)
delete(temp);
}
protected:
Tnode *head,*tail,*flag;
int sump,beginp,m;
};
TPclass::TPclass(int ms,int mb,int mm)//初始化
{
head=NULL;
tail=NULL;
sump=ms;
beginp=mb;
m=mm;
flag=NULL;
}
void TPclass::Creat()//建立循环表
{
Tnode *temp=NULL;
int number=1;
head=new Tnode;
tail=new Tnode;
head->data=1;
head->next=tail;
tail->data=sump;
tail->next=head;//建立头和尾
while(number!=(sump-1))//中间插的人的数量 按一定的位置顺序
{
temp=new Tnode;
temp->data=sump-number;
temp->next=head->next;
cout<<temp->data<<endl;
head->next=temp;
number++;
}
}
void TPclass::Print()
{
Tnode *temp=head,*p=NULL;//temp:开始的变量
while(temp->data!=beginp)
temp=temp->next;
while(sump!=2)//留两个 可以设置变量 让用户选择
{
for(int i=1;i<=m;i++)//选人
temp=temp->next;
p=temp->next;//p=temp
temp->next=p->next;
cout<<p->data<<endl;
delete(p);
sump--;
}
flag=temp;
for(int i=1;i<=2;i++)
{
cout<<"the last"<<temp->data;//因为留了两个
temp=temp->next;
}
}
void main()
{
int stop;
TPclass TP(20,5,2);
TP.Creat();
TP.Print();
cin >>stop;
}