• 关于软件考试的一道C语言的解析


    对于2009年上半年软件设计师下午试题的一个分析,对于第五个空很多网上给出的答案都是ptr->rchild,本人认为应为q->elem->rchild,因为此时ptr已为空,ptr->rchild会报错,以下为本人写的测试程序,在c++ builder中测试通过

    //---------------------------------------------------------------------------

    #pragma hdrstop

    //---------------------------------------------------------------------------

    #pragma argsused
    #define NULL 0
    typedef struct BtNode{
      char data;
      struct BtNode *lchild,*rchild;
    }BiTNode,*BtTree;

    typedef struct StNode{
      BtTree elem;
      struct StNode *link;
    }StNode;

    BtTree createBitTree()
    {  char ch;
       BtTree bt;
       scanf("%c",&ch);

       if(ch==' ')  bt=NULL;
       else
         {if (ch!='#')
         {   bt=(BtTree *)malloc(sizeof(BiTNode));
           bt->data=ch;
           bt->lchild=createBitTree();
           bt->rchild=createBitTree();
         }
         else
           return(bt);}
       return(bt);
    }

    void visit(StNode *q)
    {
      printf(" %c ",q->elem->data);
    }
    int InOrder(BtTree root)
    {
      BtTree ptr;
      StNode *q;
      StNode *stacktop=NULL;
      ptr=root;
      while (ptr!=NULL || stacktop!=NULL) {
        while (ptr!=NULL) {
          q=(StNode *)malloc(sizeof(StNode));
          if (q==NULL)
            return -1;
          q->elem=ptr;
          q->link=stacktop;
          stacktop=q;
          ptr=ptr->lchild;
        }
        q=stacktop;
        stacktop=q->link;  //或为stacktop=stacktop->link;
        visit(q);
        ptr=q->elem->rchild;  //如为ptr=ptr->rchild 运行报错
        free(q);
      }
      return 0;
    }

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/djcsch2001/archive/2009/10/17/4689093.aspx

  • 相关阅读:
    剑指Offer——对成的二叉树
    剑指Offer——二叉树的下一个节点
    路径总和I、II、III
    性能调优工具
    关于在程序中内存检测的一些知识
    ptmalloc、tcmalloc及 jemalloc总结
    [LeetCode] 43. 字符串相乘
    [LeetCode] 155. Min Stack
    [LeetCode] 380. Insert Delete GetRandom O(1)
    linux内存过高排查
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035151.html
Copyright © 2020-2023  润新知