嚴蔚敏2.33







#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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章