| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
二叉树#include<cstdio>
#include<cstring>
struct node
{
char s[10];
int number;
node * left,* right;
};
void insert(char * a,node * root)
{
node * pos=root;
node * fapos=NULL;
while(1)
{
if(pos)
{
if(strcmp(a,pos->s)>0)
{
fapos=pos;
pos=pos->right;
}
else if(strcmp(a,pos->s)<0)
{
fapos=pos;
pos=pos->left;
}
else
{
pos->number++;
break;
}
}
else
{
if(strcmp(a,fapos->s)>0)
pos=fapos->right=new node;
else
pos=fapos->left=new node;
strcpy(pos->s,a);
pos->number=1;
pos->left=pos->right=NULL;
break;
}
}
}
void travel(node * root,int & n)
{
int i;
if(root)
{
travel(root->left,n);
if(root->number>1)
{
n++;
for(i=0;i<3;i++)
printf("%c",root->s[i]);
printf("-");
for(i=3;i<7;i++)
printf("%c",root->s[i]);
printf(" %d\n",root->number);
}
travel(root->right,n);
}
}
int main()
{
char s[50],standard[10];
int n,i,j,temp,count=0;
node * root=NULL;
scanf("%d",&n);
temp=n;
while(n--)
{
scanf("%s",s);
i=j=0;
while(s[i]!='\0')
{
if(s[i]>='0'&&s[i]<='9')
{
standard[j]=s[i];
j++;
}
else if(s[i]>='A'&&s[i]<='O')
{
standard[j]=(s[i]-'A')/3+'2';
j++;
}
else if(s[i]>='P'&&s[i]<='S')
{
standard[j]='7';
j++;
}
else if(s[i]>='T'&&s[i]<='Y')
{
standard[j]=(s[i]-'T')/3+'8';
j++;
}
i++;
}
standard[j]='\0';
if(temp-1==n)
{
root=new node;
strcpy(root->s,standard);
root->number=1;
root->left=root->right=NULL;
}
else
insert(standard,root);
}
travel(root,count);
if(count==0)
printf("No duplicates. \n");
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator