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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 对于2009年上半年软件设计师下午试题的一个分析,对于第五个空很多网上给出的答案都是ptr->rchild,本人认为应为q->elem->rchild,因为此时ptr已为空,ptr->rchild会报错,以下为本人写的测试程序,在c++ builder中测试通过 //---------------...

对于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

相关文章
|
21天前
|
数据可视化 数据挖掘 BI
团队管理者必读:高效看板类协同软件的功能解析
在现代职场中,团队协作的效率直接影响项目成败。看板类协同软件通过可视化界面,帮助团队清晰规划任务、追踪进度,提高协作效率。本文介绍看板类软件的优势,并推荐五款优质工具:板栗看板、Trello、Monday.com、ClickUp 和 Asana,助力团队实现高效管理。
45 2
|
1月前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
141 14
|
1月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
49 8
|
1月前
|
存储 算法 C语言
【C语言】深入浅出:C语言链表的全面解析
链表是一种重要的基础数据结构,适用于频繁的插入和删除操作。通过本篇详细讲解了单链表、双向链表和循环链表的概念和实现,以及各类常用操作的示例代码。掌握链表的使用对于理解更复杂的数据结构和算法具有重要意义。
473 6
|
1月前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
41 5
|
1月前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
43 5
|
20天前
|
监控 数据可视化 搜索推荐
教育行业办公软件全解析!J 人备考能否从中受益?
本文深入剖析了 6 款可视化团队协作办公软件,包括板栗看板、Trello、Asana、Monday.com、Wrike 和 ClickUp,旨在为教育领域的从业者与学习者提供全面且实用的参考。这些软件各具特色,如板栗看板的简洁界面和强大任务操控,Trello 的高度定制化和丰富插件,Asana 的精细任务管理和高效团队沟通,Monday.com 的灵活布局和数据分析,Wrike 的多层次任务架构和智能分配,以及 ClickUp 的多样化视图和深度定制。J 人可根据自身需求选择最适合的工具,提升工作效率与学习效果。
25 0
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
69 10
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
52 9