《高等C程式库设计范例》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:莹圃电脑研究开展部编译
  • 出 版 社:
  • 出版年份:1989
  • ISBN:
  • 页数:616 页
图书介绍:

第一章 排序的工具 3

1.1内部排序演算法:插入与快速排序 3

1.1.1虚拟码 4

1.1.2快速分类:较迅速的演算法 7

1.2一般化内部排序函数:memsort 15

1.3 memsort执行效率的分析 25

1.4加强memsort之功能 27

1.5应用:文字行的排序 28

1.5.1虚拟码 30

1.5.2 SORTTEXT的原始档 31

1.5.3 sorttext.c检查命令行是否标明了两个档名,再呼叫dosort对档案进行排序 33

1.5.4 fillarea.c以一行接一行的方式读取文字档,并以传送引数的方式,将其放入储存区域 33

1.5.5 outf i l e.c使用经memsort排序过的指标阵列,将文字行依序写出 38

1.5.6 sortio.c 39

1.6外部排序演算法 44

1.6.1外部排序的虚拟码 46

1.6.2资料结构 49

1.6.3例外 50

1.7 MERGE1原始档案 50

1.7.1 mergel.h最多可合并的记录群个数,以及合并阶段的两个函数所用到的NDATA资料结构 50

1.7.2 mergel.cmergelc是根据sorttext.c所建立的程式 51

1.7.3 formruns.c控制从输入档建立起始的记录群,类似SORTTEXT的dosort函数 55

1.7.4 domerge.c控制程式的合并阶段 58

1.7.5 dopass.c执行单一合并处理的巡回,它的输入引数是输入与输出档名的字首 59

1.7.6 smerge.c执行实际的合并工作,其逻辑如同虚拟码 62

1.7.7 resort.c将最后一个元素插入阵列中 65

1.7.8 util.cutil.c档案包括了一些公用函数:swap_str, mkname及defile 66

1.7.9程式结构 68

1.8 MERGE2:一般化的外部排序程式 69

1.9 MERGE2:原始档案 71

1.9.1 sortcomp.h定义了标明键值栏位的常数及资料型态 71

1.9.2 sortspec.h定义了输出入模组所需的档案与记录型态常数 72

1.9.3 sortcomp.c比较两个记录,它以getspec所定义的键值栏位做回圈 72

1.9.4 sortio2.c显示对SORTTEXT与NERGEl程式所用的输出入函数所作之修改 79

1.9.5 getspec.c扫描命令行,找出档案型态,记录型态或排序键的规格 85

1.9.6 merge2.c 91

1.10测量MERGE2的执行效率 94

1.11加强MERGE2之功能 95

1.11.1较好的使用者介面 96

1.11.2处理大档案 96

1.11.3处理更多的资料型态 98

1.11.4更佳的执行效率 99

1.11.5更具弹性 100

1.11.6改进演算法 101

1.12结论 101

第二章BTREE:索引档模组 103

2.1观念的发展 104

2.2 BTREE模组的功能规格 112

2.3 BTREE虚拟码 119

2.4例外情形与设计选择 124

2.5 BTREE程式列表 127

2.5.1 btree.hbtree.h定义的BTREE函数,负责传回成功或失败的代号 131

2.5.2 bt_macro.h bt_ maro.h的定义只在BTREE模组会用到 135

2.5.3 bt_space.c定义一些BTREE的整体变数,将所有整体变数宣告于一个不包含任何函数的档案中 137

2.5.4 bt_low2.c提供一些处理区段中索引项的低阶工具 139

2.5.5 bt_file.c负责索引档的输出入运算 142

2.5.6 bt_util.c支援BTREE的公用函数 145

2.5.7 bt_f ree.c管理一未用的索引区段的串列(list) 148

2.5.8 blockio.c与bt_cache.c提供索引区段的输入与输出 151

2.5.9 openix.c集合了有关开启与阅闭索引档的函数 160

2.5.10 bt_first.c定位于索引的开始/结束之处 165

2.5.11 bt_get.c get_next和get_previous皆将位于新的目前位置的项目,拷贝到输入引数所提供的位址 169

2.5.12 bt_block.c在同一个区段中完成找寻、插入,以及取代的功能 175

2.5.13 b+_f ind.c找寻函数 180

2.5.14 bt_ins.c插入函数 183

2.5.15 bt_del.c包含了几个有关删除项目的函数 190

2.5.16 bt_low.c BTREE模组的低阶函数 199

2.5.17 bt_top.c find_exact, find_ins find_del函数 202

2.6分析BTREE 205

2.7测试BTREE 208

2.8加强BTREE之功能 209

2.8.1去除限制条件 209

2.8.2较好的错误处理 210

2.8.3公用程式 210

2.8.4储存区更好的用途 211

2.8.5组合BTREE与资料记录管理 211

2.8.6键的压缩 212

2.8.7档案管理应用 212

2.9简单应用:书信索引 213

2.10结论 231

第三章IBM PC特定用途之低阶语言工具库 233

3.1组合语言工具程式 236

3.1.1传输埠I/O 236

3.1.2存取所有PC的记亿体 245

3.1.3产生软体岔断 255

3.1.4备注 267

3.2测试组合语言函数 267

3.3修改工具库程式以适用于其他的编译器与组译器 285

3.4使用其他的记忆体模式(memory model) 296

3.5支援swint函数 299

3.6 DOS的利用 303

3.6.1产生DOS呼叫 310

3.7键盘输入 313

3.7.1备注 323

3.8 VIDEO输出函数 324

3.9直接萤幕输出 340

3.9.1设计方法 344

3.9.2完成SCREEN模组 346

3.9.3测量SCREEN模组的执行速度 362

3.10计时器函数 363

3.11建立档案输出入库存函数 366

3.12使用并修改工具库函数 374

3.13结论 375

3.13.1应用程式的弹性和品质 375

3.13.2可携带性 376

3.13.3发展技巧 376

第四章 终端机模拟程式 377

4.1终端机模拟程式的功用 379

4.1.1非同步通讯 380

4.1.2非同步通讯转接器 380

4.1.3 8250 UART晶片 381

4.1.4 RS-232界面 381

4.1.5中断讯号 382

4.1.6鲍率 382

4.2基本的终端机模拟程式 383

4.2.1非同步通讯输出入支援程式 385

4.3 TTY1的执行效率 395

4.3.1查询 401

4.3.2优先权定序方式 401

4.3.3问题分析 402

4.4改进TTY1程式的执行效率 402

4.5定义TTY终端机模拟程式 405

4.6 TTY2的原始程式档 408

4.6.1 TTY2的标头档案 411

4.6.2 tty2.c第二个TTY终端机模拟程式 412

4.6.3 tty2get.c取得键盘输入 415

4.6.4 tty2exec.c执行键盘命令 417

4.6.5 tty2disp.c disp_char和disp_msg函数分别用来显示单一字元或字串 419

4.6.6 tty2rec.c档案的读取/记录函数 421

4.6.7 tty2brk.c送出中断讯号 427

4.6.8 tty2rcv.c字元接收的处理 429

4.6.9 queue.c以先进入先处理的次序来存取资料的缓冲区 433

4.6.10 async2.c增加传送一个中断讯号,以及设定接收资料的岔断等功能 439

4.6.11 install.c设定/去除中断向量 446

4.6.12 intcode.asm处理岔断 447

4.7编译、测试,并评估TTY2程式 453

4.8功能的改进 455

4.8.1使用参数 455

4.8.2设定通讯参数 455

4.8.3拨接电话号码 456

4.8.4拨号目录 456

4.8.5报导状态及错误 457

4.8.6错误检查协定 457

4.8.7模拟特定的CRT终端机 458

4.8.8布告栏系统 459

4.8.9更快的速度 459

4.9结论 460

第五章 结语以及最后的一些考虑 461

5.1使用C语言的其他特性:程式最佳化 462

5.2处理Control-Break的情况 468

5.3处理严重错误 475

5.4讨论 489

附录A IBM PC的结构与C语言的记忆体模式 491

附录B各种工具SOURCE程式 495