加载中
第17章 高级数据表示 编程练习

1、修改程序17.2,使其即能以正序又能以逆序显示电影列表。一种方法是修改链表定义以使链表能被双向遍历;另一种方法是使用递归。 #include <stdio.h> #include <stdlib.h> #include <strin...

第17章 高级数据表示 17.7 二叉搜索树 (第三部分 试用树)

现在已经有了接口和函数实现,我们来使用它们。 程序示例使用菜单来选择向俱乐部成员花名册添加宠物、显示成员列表、报告成员数、核查成员及退出。函数main()很简单,它集中于实质性问题的概...

第17章 高级数据表示 17.7 二叉搜索树 (第三部分 完整包)

下面给出完整的tree.c代码。tree.h和tree.c共同组成树程序包。 tree.c实现文件 /*tree.c --树类型的支持函数*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #include "tre...

2017/09/09 07:04
13
第17章 高级数据表示 17.7 二叉搜索树(第二部分 二叉树分步实现)

下面的任务是实现tree.h中描绘的伟大的函数。InitializeTree()、EmptyTree()、FullTree()和TreeItems()函数比较简单,与列表和队列抽象数据类型中的同类函数差不多。我们重点讨论其余...

第17章 高级数据表示 17.7 二叉搜索树(第一部分ADT 和 接口)

第一部分ADT 和 接口 二叉搜索树是一种结合了折半搜索策略的链接结构。 树中的每一个节点都包含一个项目和两个指向其他节点的(称为子节点,child node)指针。这种构思是每个节点都有两个子...

第17章 高级数据表示 17.6链表和数组

很多编程问题,比如创建一个列表或队列,可以用链表(一个动态分配的结构序列链)或数组来表示。每种形式都有其优势和缺点,所以要根据具体问题的需求来决定选择哪种形式。表17.3总结了链表和...

第17章 高级数据表示 17.5用队列进行模拟

前一章节讲的队列现在可以使用了。很多现实生活中的情形都包含队列。例如,在银行或超级市场的顾客队列,在机场的飞机队列,多任务计算机系统上的任务队列等。可以用队列包来模拟这些情形。 ...

2017/08/23 07:34
14
第17章 高级数据表示 17.4 队列ADT

正如您看到的,用抽象数据类型方法进行C语言编程包含下面三个步骤: 1、以抽象、通用的方式描述一个类型,包括其操作; 2、设计一个函数接口来表示这种新类型; 3、编写具体代码以实现这个接...

第17章 高级数据表示 17.3 抽象数据类型(ADT)

在电影的例子中,数据形成了一个项目列表,其中每一项包含一个片名(C的字符串)和等级(int值)。C中没有符合这个需求的基本类型,所以需要定义一个结构来表示每个项目,然后设计一此方法来...

第17章 高级数据表示 17.2 从数组到链表

您可能会希望可以不确定的添加数据(或者不断添加数据,直到程序内存用完为止),而不用事先指定您会输入多少个项目,也不用让程序分配不必要的大块内存。这一点可以通过在输入每个项目之后调...

第17章 高级数据表示 17.1 研究数据表示

假设您需要创建一个地址薄程序。您将使用何种数据形式来存储信息?因为与每个项目相关的信息有很多类别,所以用一个结构来表示每一个项目显得很适合。如何表示多个项目?是标准的结构数据、动...

第17章 高级数据表示

我们将从研究程序设计的关键部分,即程序表示数据的方式入手。 您已经了解到C的内建数据类型:简单变量、数组、指针、结构以及联合。 但是,寻找正确的数据表示方式不仅仅是选择一种数据类型...

第16章 C预处理器和C库 编程练习

1、开发一个包含您需要使用的预处理器定义的头文件。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "mylib.c" #define MAX 12 #define SUMSQ(x,y)((x)*(x)+(y)...

第16章 C预处理器和C库 16.13 可变参数:stdarg.h

本章前面讨论了可变宏,该宏接受可变个数的参数。 头文件stdarg.h为函数提供了类似的能力。不过使用方法稍微复杂一些。必须按如下步骤进行: 1、在函数原型中使用省略号; 2、在函数定义中创...

第16章 C预处理器和C库 16.12 string.h库中的memcpy()、memmove()

不能把一个数组的值直接赋给另一个数组,因此,我们使用循环把数组中的元素逐个复制到另一个数组。 一个例外情况是:可以使用strcpy()和strncpy()函数复制字符数组。memcpy()和memmove()函数...

第16章 C预处理器和C库 16.11 诊断库

由头文件assert.h支持的诊断库是设计用于辅助调试程序的小型库。它由宏assert()构成。该宏接受整数表达式作为参数。如果表达式值为假(非零),宏assert()向标准错误流(stderr)写一条错误消...

第16章 C预处理器和C库 16.10 通用工具库

通用工具库包含各种函数,其中包括随机数产生函数、搜索和排序函数、转换函数和内存管理函数 。ANSI C 中,这些函数的原型在头文件stdlib.h中。 16.10.1 exit()函数和atexit()函数 我们在一些...

第16章 C预处理器和C库 16.9 数学库

数学库包含许多有用的数学函数。头文件math.h提供这些函数的函数声明或原型。 ANSI C 标准数学函数描述 原型 描述 double acos(double x) 返回余弦值为x的角度值 double asin(double x) 返回...

第16章 C预处理器和C库 16.8 C库

最初并没有官方的C库,后来,基于UNIX的C实现变成了事实上的标准。于是ANSI C 委员会主要以这个标准为基础开发了一个官方标准库。认识到C的应用范围不断扩展后,该委员重新定义了这个库,以使...

2017/07/26 07:19
10
第16章 C预处理器和C库 16.7 内联函数

通常函数调用需要一定的时间开销。这意味着执行调用时花费了时间用于建立调用、传递参数、跳转到函数代码段并返回。使用类函数宏的一个原因就是减少执行时间。C99还提供了另一种方法:内联函...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部