码迷,mamicode.com
首页 > 其他好文 > 详细

Poj_1002 487-3279

时间:2014-10-06 06:19:29      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   sp   

题目链接:http://poj.org/problem?id=1002

 

思路:

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

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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++] = -;
    }
}

 

Poj_1002 487-3279

标签:style   blog   http   color   io   os   ar   for   sp   

原文地址:http://www.cnblogs.com/tallisHe/p/4007894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!