严奶奶数据结构的一些解释.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
严奶奶数据结构的一些解释

(4)关于typedef和#define 1)typedef 有的书上在定义变量[的时候会出现一些你在程序设计教材中从来没见过的诡异的数据类型,比如严奶奶书上就有类似于Elemtype A;的变量定义语句,这里的Elemtype是什么类型,新来的同学常常会一头雾水。要说明这个问题,我们先来说明一下typedef的用法。一句话,typedef就是用来给现有的数据类型起一个新名字的,我们在结构类型定义时用到过,如typedef struct{……} TypeA;即为给 “struct{……}”起了一个名字TypeA,就好比你制作了计算机中的整型,给他起了个名字为int。并且如果我想给int型起个新名字A,就可以这样写typedef int A;这样的话定义一个整形变量x的时候A??x;就等价于int??x;在考研中typedef用的最多的地方就在结构型的定义过程中,其他的地方几乎不用。你可以这样理解typedef是用来起名字的,新定义的结构型没有名字,因此用typedef给它起个名字是有必要的,但是对于已有的数据类型,如int,float等已经有了简洁的名字,还有必要给它起个新名字吗?有必要,但不是在考研数据结构中。为什么有必要,有兴趣的同学可以去查下资料,查完你会发现,typedef对程序设计的贡献很大,但是对于考研答卷,用处不大,所以大家对其用法不必深究。说到这里大家就明白了,严奶奶的书上之所以有那么多大家不认识的数据类型,只不过是严奶奶悄悄的给我们认识的数据类型起了新名字而已。 2)#define 在严奶奶的书上除了我们没见过的数据类型以外,还有一些东西我们也没见过,比如在一个函数中她会写到return ERROR; return OK;之类的语句,对于经常在编译器上写代码的同学,乍一看到这种语句会十分的不爽,立马就会想,ERROR和OK这样的东西能编译通过?或者就是怀疑自己语言水平太差,严奶奶写的程序里边有太多自己看不懂的地方了,信心大减。其实不然,和typedef一样,严奶奶悄悄的用#define语句处理过ERROR或者OK之类的词了。其实ERROR和OK就是两个常量,作为函数的返回值,来提示用户函数操作结果的。严奶奶初衷是想把0,1这种常作为函数返回标记的数字定义成ERROR和OK(一般出错返回0,成功返回1),这样比起数字来更人性化,更容易理解,但结果却适得其反,让新手们更困惑了。#define对于考研数据结构可以说没有什么贡献,我们只要认得它就行,写程序时一般用不到。比如#define MAX 50这句,即定义了常量MAX(此时x=50;等价于x=MAX;)。在写程序大题的时候如果你要定义一个数组,如int??A[MAX];加上一句注释:“/*MAX为已经定义的常量,其值为50*/”即可。没必要跑到你的程序最前边去加上#define MAX 50这一句,原因前边已经讲过。 严奶奶的书中有很多用自己加工过的代码书写的程序,和编译器上我们习惯的写法有很大出入,所以对于新手较难理解。本书的作用在很大程度上就是做了一个翻译的角色,不过是站在学生的角度把课本上用过于严谨以及专业化的词语描述的思想用通俗易懂的语言表达给你而已。 2.函数 说明:只要是算法设计题,必用到函数,所以其中的一些注意事项这里有必要说一下。 (1)用函数来缩短代码 如果有一段较长的操作需要在一个函数中反复多次使用,那么你最好把这个操作做成一个函数,在你要用的地方调用它,会节省很多答题空间。比如: void f() { ……//1 ……//2 ……//3 ……//4 ……//5 ……//6 ……//7 ……//8 } 这个函数中的8句组成了一个操作。这个操作在另一个函数(函数名为F)中要多次用到。此时我们就可以把这8句做成一个函数,当用到的时候调用即可,比如: void F() { f(); …… …… f(); …… …… f(); } 从上边可以看出,如果不用f()函数,就得把f()中的8行写3遍,使得F()函数很长。 (2)被传入函数的参数是否会改变 int a; void f(int x) { ??x++; } 上边声明的函数,它需要一个整型变量作为参数,且在自己的函数体中将参数做自增1的运算。执行完以下程序段之后a的值是多少呢? a=0;? ?//① f(a);??//② 有些同学可能以为a等于1。这个答案是错误的,可以这样理解,对于函数f(),在调用他的时候,括号里的变量a和句①中的变量a并不是同一个变量。在执行句②的时候,变量a只是把自己的值赋给了一个在f()的声明过程中已经定义好的整形变量,可以把这个变量想象为上述声明过程中的x,即句②的执行过程拆开看来是这样两句:x=a;x++;因此a的值在执行完①,②两句之后不变。 如果

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档