现在的位置: 首页 > 综合 > 正文

二叉搜索树 链表

2013年04月21日 ⁄ 综合 ⁄ 共 1115字 ⁄ 字号 评论关闭

有指针一定要小心中,今天一不小心,浪费了我一个小时去改错。。悲剧。。。

注意指针初始化。。。还有全局变量,局部变量。。指针与取地址。。

#include<stdio.h>
#include<string.h>
//#include<debug.h>
#include<stdlib.h>
typedef struct node
{
 struct node *rchild,*lchild;
 int ch;
}NODE,*NOE;

void creattree(NOE &T,NOE P)
{
  NOE S,Q;
  if(P==NULL)
  return ;
  //printf("*********\n\n");
  if(T==NULL)
  {
  
  T=P;
  
  }
   
  else
  
  {
   S=T;
  // printf("*********\n\n");
   while(S!=NULL)
  {
   Q=S;
   if(P->ch<S->ch)
   {
   S=S->lchild;
   }
   else
   {
   S=S->rchild;
   }
 }
   if(P->ch>=Q->ch)
    Q->rchild=P;
    else
    Q->lchild=P;
 
 }

 
}
int comp(NOE q,NOE l)
{
  if(q==NULL&&l==NULL)
  return 0;
  else if((q==NULL&&l!=NULL)||(q!=NULL&&l==NULL))
  return 1;
  else if(q->ch!=l->ch)
  return 1;
  else 
  return comp(q->lchild,l->lchild)+comp(q->rchild,l->rchild);
}
  
int main( )
{
    int N,i,len;
    //Debug();
   
    char str[11];
    while(scanf("%d",&N),N)
    {
      getchar();
      scanf("%s",str);
      len=strlen(str);
       NOE V;
        V=NULL;
      for(i=0;i<len;i++)
      {
        NOE H;
        H=new NODE;
        
        H->ch=str[i]-'0';
        H->rchild=NULL;
        H->lchild=NULL;           
        creattree(V,H);
         //printf("*********\n\n");
    }
    while(N--)
    {
             
      NOE r;
      r=NULL;
      char ab[11];
     scanf("%s",ab);
    int  len2=strlen(ab);
      for(i=0;i<len2;i++)
      {
        NODE *t;
        t=new NODE;
        t->ch=ab[i]-'0';
        t->rchild=NULL;
        t->lchild=NULL;           
        creattree(r,t);
      }
      int res=comp(V,r);
      printf(res?"NO\n":"YES\n");
    
}
}
    system("pause");
    return 0;
}
      

抱歉!评论已关闭.