数据结构学习(C )线性链式结构总结(代后记)1.docVIP

数据结构学习(C )线性链式结构总结(代后记)1.doc

  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文档。上传文档
查看更多
数据结构学习(C )线性链式结构总结(代后记)1

数据结构学习(C++)——线性链式结构总结(代后记)【1】 ????happycock(原作)? 转自CSDN ? ??? 看到这个标题,有些人一定松了一口气——这小子可算白话完了,当然了,你要是略有惋惜之情,我真是受宠若惊。但不论你怎么想,写到这里只是告一段落,并没有完,后面还有很大一部分呢,比如树、图、查找、排序——这么多年了,还是这点东西。代后记的意思是,我觉得对前面线性链式结构的总结,对后面的学习有指导意义:从前面的学习中,你能得出如何学习数据结构,以及如何正确看待这门课——如果你能从重复建设中看到这样做的价值,你才能真正理解这门课的意义。 在开始总结前,先整理一下以前的代码,假定你使用的是VC6,你的工程中现在应该有这几个主要文件:Node.h、List.h、Stack.h、Queue.h、CircList.h、DblList.h、Polynomial.h、Expression.h、Matrix.h,一个含有main()的cpp文件。其他的是一些测试文件和一些应用,比如Simulation.h。如果你用的不是VC6,你一定背地里咒骂我多少次了,因为一大堆error和warning。我当初发布的时候,并没有考虑到不同编译器的差异,我觉得只要光使用标准库(仅仅用了iostream.h和stdlib.h),不写怪怪的代码,通用性应该不是问题,但实际上不是这样。所以,我不得不花一些篇幅介绍如何修改以前的代码,所以,这篇文章就只能是【1】了;不过,后面有一个计时器类的源码,就算是一点补偿吧。 VC6、BCB6、Dev-cpp的编译器的差异 这些应该是目前Win32下最常用的IDE环境了,各自的编译器分别是CL.exe、BCC32.exe、G++.exe(就是GNU C++)。我没装BCB6,所以只是拿BCC32来代替。VC6时间比较早(98年),对C++标准支持不是很完善,例如下面的代码: for (int i = 1; i 10; i++); for (int i = 1; i 10; i++); 按照C++标准,i的作用域应该是for循环内。但是在VC6中,出了定义i的for循环,仍然有效,所以,这段代码在VC6中被认为是重复定义。我为了省事,在并列的第二个循环内,把int省略了。现在到了BCC32,它在这方面对于C++标准倒是很支持,于是,象我那样的做法,就是第二个i没定义。让这样的代码同时适应两个编译器的解决办法,要么第2个循环变量换个名字,要么退回到C的写法: int i; for (i = 1; i 10; i++); for (i = 1; i 10; i++); VC6中的=重载可以不需要函数类型(默认int),顺便不需要返回值。这很好理解,=只能是成员函数,并且操作对象是一定的,返回值是什么(和int main()一个道理)?但这合情合理的做法是违反标准的(让人想起了什么),到了BCC32,人家不干了,非让给个返回值,可以添加return 0;了事,两边都不得罪;或者,定义void operator=,一样两边都认可。VC7也要求operator=必须有返回值,还是标准的力量大啊。 修正如上的问题之后,BCC32就能编译了,但是还是一大堆waining,这是我写作的风格导致的。C++标准说,如果在类体内定义函数(而不是声明原型),那个函数被自动内联;也就是说,我的那些类的成员函数,编译器都认为我想让他们成为内联函数,但是有些函数是不能内联的,于是编译器就说“你的要求太高了,我办不到”——我也没想让你受累啊,自找麻烦的编译器。 胡弄过去BCC32后,再拿Dev-cpp试试,晕了,上百个error和warning。其实这是个连锁反应,首先,在GNU C++中,iostream.h这个头文件被废弃了,强烈建议使用iostream(总觉得象大棒),还好VC6、BCC32也认这个。改了这个,又来了一个啼笑皆非的warning,文件尾必须要有一个空行?!我以前为了紧凑,有空行也删掉了,得,听你的,加上。这些都完事之后,Dev-cpp就通过了,没有warning。 这样修改完后,那些代码3个编译器就都能编译了,看一下编译的exe文件大小,VC6的最小(Release版),BCC32的大一点,Dev-cpp的……大得太可怕了,我不清楚是不是编译器的参数问题,但是GNU C++能在Win32下使用,都是经过转换的,不知道是不是这个原因。突然有个想法,哪个编译器编译的exe文件运行的更快? 哪个编译器效果更好? 首先,要写个计时器,这方面有人写过文章,我参考了一些人的,做了一个封装,如下: #ifndef Timer_H #define Timer_H ? #include windows.h ? class

文档评论(0)

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

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

1亿VIP精品文档

相关文档