POJ2255 解題報告

聲明:這篇文章是學習了網友Cathy11的博客之後才寫的,向Cathy11表示感謝!
今天做了POJ2255,感覺有點難,因爲要用到結構體和二叉樹等知識,開始糊弄了很久,沒有思路,後來看了網友的報告,一下豁然開朗,感覺自己收穫挺大的,發文記念。
網友原文是用C++寫的,鄙人不才,對C++用得不熟,於是改用C寫,感覺用C還是沒有C++方便,因爲C++的STL有一些很方便的函數可以直接調用。
程序如下:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

typedef struct NODE
{
        char t;
        struct NODE *lch,*rch;
}Node;

int find(char *str,char ch,int len)
{
    int i;
    for(i=0;i<len;i++)   
    {
       
                     if(str[i]==ch)    
                     return i;
    }
   
}

Node *create(char *str1,char *str2,int len1,int len2)
{
     Node *root;
     if(len1>0)
     {
                    root=(Node*)malloc(sizeof(Node));
                    root->t=str1[0];
                    int index=find(str2,root->t,len2);
                    root->lch=create(str1+1,str2,index,index);
                    root->rch=create(str1+index+1,str2+index+1,len1-index-1,len2-index-1);
     }
     else
     {
         root=NULL;
     }

     return root;
                
}


int output(Node *root)
{
    if (root!=NULL)
    {
                   output(root->lch);
                   output(root->rch);
                   printf("%c",root->t);
    }
   
    return 0;
}

int main()
{
    char str1[50]="";
    char str2[50]="";
   
    while(scanf("%s%s",str1,str2)!=EOF)
    {
                                       Node *root=create(str1,str2,strlen(str1),strlen(str2));
                                       output(root);
                                       printf("/n");
    }
    return 0;
}

 

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