#include <iostream>
#include <time.h>
using namespace std;
class LinkList
{
public:
int Value;
int Order;
LinkList *Head,*Next;
void CreateList();
void ShowList();
};
void LinkList::CreateList()
{
srand(time(NULL));
int Length=int(rand()%100);
while(Length<64)
{
Length=int(rand()%100);
}
LinkList *p=new LinkList();
p->Order=1;
p->Value=int(rand()%128);
Head=p;
for (int i=2;i<=Length;i++)
{
LinkList *q=new LinkList();
q->Order=i;
q->Value=int(rand()%128);
p->Next=q;
p=q;
}
}
void LinkList::ShowList()
{
LinkList *p=new LinkList();
p=Head;
while(p!=NULL)
{
cout<<"Node["<<p->Order<<"]:"<<p->Value<<endl;
p=p->Next;
}
}
class DivideList
{
public:
int Order;
int Value;
int Length;
void Insert(int n);
DivideList *Next,*End,*Head;
DivideList();
};
DivideList::DivideList()
{
Length=0;
Head=NULL;
}
void DivideList::Insert(int n)
{
Length+=1;
if (Length==1)
{
Head=new DivideList();
End=new DivideList();
Head->Order=1;
Head->Value=n;
End=NULL;
Head->Next=NULL;
}
else if (Length==2)
{
DivideList *p=new DivideList();
p->Order=Length;
p->Value=n;
End=p;
End->Next=Head;
Head->Next=End;
}
else
{
DivideList *p=new DivideList();
p->Order=Length;
p->Value=n;
End->Next=p;
p->Next=Head;
End=p;
}
}
int IsData(int n)
{
if (n>='0'&&n<='9')
return 1;
return 0;
}
int IsAlpha(int n)
{
if ((n>='a'&&n<='z')||(n>='A'&&n<='Z'))
return 1;
return 0;
}
int Divide(LinkList &L,DivideList &alpha,DivideList &data,DivideList &others)
{
LinkList *p=new LinkList();
p=L.Head;
while(p!=NULL)
{
if (IsAlpha(p->Value))
{
alpha.Insert(p->Value);
}
else if (IsData(p->Value))
{
data.Insert(p->Value-'0');
}
else
{
others.Insert(p->Value);
}
p=p->Next;
}
delete p;
cout<<"分離成功!"<<endl;
return 1;
}
int main()
{
LinkList str;
DivideList alph,data,others;
str.CreateList();
str.ShowList();
int i;
if(Divide(str,alph,data,others))
{
cout<<"字母表爲:"<<endl;
DivideList *p=new DivideList();
p=alph.Head;
if (p!=NULL)
{
for (i=1;i<=alph.Length;i++)
{
cout<<"Node["<<p->Order<<"]:"<<char(p->Value)<<endl;
p=p->Next;
}
}
cout<<"數字表爲:"<<endl;
p=data.Head;
if (p!=NULL)
{
for (i=1;i<=data.Length;i++)
{
cout<<"Node["<<p->Order<<"]:"<<p->Value<<endl;
p=p->Next;
}
}
cout<<"其他字符表爲:"<<endl;
p=others.Head;
if (p!=NULL)
{
for (i=1;i<=others.Length;i++)
{
cout<<"Node["<<p->Order<<"]:"<<char(p->Value)<<endl;
p=p->Next;
}
}
delete p;
return 1;
}
else
return 0;
}
嚴蔚敏2.33
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.