分享
 
 
 

《数据结构的C++伪码实现》(《DATA STRUCTURES A Pseudocode Approach with C++》)读书笔记(二)

王朝c/c++·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

第一章 简介

主要讲述伪码(pseudocode)、抽象数据类型(ADT)、算法效率(efficiency)

伪码(pseudocode):

一种类英语结构描述码。举例:

algorithm sample(ref pageNumber <integer>)

This algorithm reads a file and prints a report.

Pre pageNumber must be initialized

Post Report Printed. pageNumber contains number of pages in report.

Return Number of lines printed

1 open file

2 lines = 0

3 loop (not end of file)

1 read file

2 if (full page)

1 form read

2 pageNumber=pageNumber+1

3 write page heading

3 end if

4 write report line

5 lines=lines+1

4 end loop

5 close file

6 return lines

end sample

这就是伪码描述算法和数据结构的基本思路,其中Pre (precondition) 列出了所有参数需要的先决条件 即使是没有任何条件我们也应该列为:

Pre Nothing

其中的参数传递分为传值(passed by value)和传移用(passed by reference)分别用val 和ref表示,这里没有提到传递指针引用,因为C++里面不提倡运用指针。昨天在图书馆看《C++沉思录》,里面提到要成为一个好的C++程序员,有三条:

1,避免使用指针

2,提倡使用程序库

3,使用类来表示概念

避免使用指针是首当其冲的,另外要注意运用和学习程序库(STL),养成复用库代码的习惯,而不是凡事自己动手。因为太去注意语言的细节,编程风格往往是C类型的,而不是C++风格的。他们不会充分运用库,而自己的程序带有严重的C主义倾向-指针满天飞,整个程序都是低层次的。另外第三点就是要用抽象的观点看待生活中的对象,练习抽象的建立这种对象的能力。

呵呵,扯远了~,言归正传。

Post (postcondition)是用来描述所有发生的行为和所有输出参数的状态,如果有值(value)返回,还需要加一个return condition 来描述返回值。

另外在伪码中使用了缩进的数字格式,便于我们描述算法用。例如statement 3.1.2 将pageNumber每次循环加一等。

抽象数据类型:

数据类型(data type)包括两部分:数据和关于数据的操作(a set of data & the operations that can be performed on the data),这里不得不提一个概念,面向对象(OOP),其中一个很重要的概念就是封装(encapsulation) ,将数据和一些操作封装起来只提供一些对外的接口,用户可以不去关心内部的结构和实现,只需要懂怎么用就行了,当然背后有我们程序员的努力工作来实现。(程序员苦啊~~),不过通过C++的继承机制可以降低程序员的工作强度,提高开发效率。

数据结构简单的说就是将一些有确定关系的元数据类型的数据组合成一组数据(set),抽象数据类型(ADT)就是在数据结构的基础上封装一些操作。因此,

1,We Know what a data type can do. 我们知道一种数据类型可以做什么

2,How it is done is hidden. 但是它怎么做就不晓得了,对外是隐藏(hidden)的。

这里用户只需要通过external interface(外部接口)实现操作,而具体实现是通过internal call(内部调用)来实现的。

现在这些概念通过C++可以很容易的实现。还有一个概念,就是范型思想。C++通过模板机制给数据抽象带来很大的通用性。例如:

// Node Declaration

template <class TYPE>

struct NODE

{

...

}; // End of Node Declaration

//List Class Declaration

template <class TYPE,CLASS KTYPE>

class List

{

...

}; // End of Class List Declation

注:此处用到的模板和格式可以分别参照附录的K部分和C部分

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有