博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Poj 1002 487-3279(二叉搜索树)
阅读量:4881 次
发布时间:2019-06-11

本文共 2306 字,大约阅读时间需要 7 分钟。

题目链接:

思路分析先对输入字符进行处理,转换为标准形式;插入标准形式的电话号码到查找树中,若有相同号码计数器增加1,再中序遍历查找树。

 

代码如下:

#include 
#include
#include
struct TreeNode;typedef char ElementType[30];typedef struct TreeNode *Position;typedef struct TreeNode *SearchTree;struct TreeNode{ int Count; ElementType Element; SearchTree Left; SearchTree Right;};void StrToNum( char *str , char * Tel );SearchTree MakeEmpty( SearchTree T );SearchTree Insert( ElementType X, SearchTree T );void PrintTel( SearchTree T );int flag = 0;int main(){ int n; char Str[100], Tel[100]; SearchTree T = NULL; menset( Tel, 0, sizeof(Tel) ); scanf( "%d", &n ); for ( int i = 0; i < n; ++i ) { scanf( "%s", Str ); StrToNum( Str, Tel ); T = Insert( Tel, T ); } PrintTel( T ); if ( flag == 0 ) printf( "No duplicates.\n" ); return 0;}void PrintTel( SearchTree T ){ if ( T != NULL ) { PrintTel( T->Left ); if ( T->Count > 1 ) { printf( "%s %d\n", T->Element, T->Count ); flag = 1; } PrintTel( T->Right ); }}SearchTree MakeEmpty( SearchTree T ){ if ( T != NULL ) { MakeEmpty( T->Left ); MakeEmpty( T->Right ); free( T ); } return NULL;}SearchTree Insert( ElementType X, SearchTree T ){ if ( T == NULL ) { T = ( Position )malloc( sizeof( struct TreeNode ) ); if ( T == NULL ) { printf( "Out of space" ); return NULL; } else { strcpy( T->Element, X ); T->Left = T->Right = NULL; } } else if ( strcmp(X, T->Element) < 0 ) T->Left = Insert( X, T->Left ); else if ( strcmp(X, T->Element) > 0 ) T->Right = Insert( X, T->Right); return T; }void StrToNum( char *str , char * Tel ){ int i, j; for ( i = j = 0; str[i] != '\0'; i++ ) { if ( str[i] == '-' ); else if ( '0' <= str[i] && str[i] <= '9' ) Tel[j++] = str[i]; else if ( str[i] < 'Q' ) Tel[j++] = ( str[i] - 'A' ) / 3 + 2 + '0'; else Tel[j++] = ( str[i] - 'A' - 1 ) / 3 + 2 + '0'; if ( j == 3 ) Tel[j++] = '-'; }}

 

转载于:https://www.cnblogs.com/tallisHe/p/4007894.html

你可能感兴趣的文章
64bit CPU 知识 (IA32,IA64,EM64T,AMD64)
查看>>
结构体 枚举
查看>>
srtlen实现以及与sizeof的比较
查看>>
linux+win7双系统重装win7修复grub的办法
查看>>
让应用在横屏模式下启动
查看>>
Intent传递list集合时异常解决
查看>>
登录验证码demo-java
查看>>
日常练习 1.0
查看>>
php集成环境
查看>>
Ubuntu下的负载均衡Web集群配置
查看>>
Create a site by Google Site - All Free
查看>>
Fragment 的基本使用
查看>>
一个谜语的十一个答案 (绝对经典)笑死人了
查看>>
mvc的个别对输入数据的验证
查看>>
typeof和GetType区别
查看>>
IBATIS事务处理 - - 博客频道 - CSDN.NET
查看>>
autoit学习安装说明及例子
查看>>
Linux常用命令(一)
查看>>
机器学习技法9-Decision Tree
查看>>
啥是文档碎片
查看>>